Простая форма с возможностью выбора из меню или ввода текста или ввода текста.Форма JQuery - получить переменную для выполнения внешних функций
Все работает в целом. Тем не менее, я пытаюсь отключить кнопку отправки до либо используется опция ввода.
Я не могу получить значение переменной, которое должно быть правильно прочитано в jquery, и я не знаю почему.
$(document).ready(function() {
var allThere = false; //stop
\t
//Either pick an item....
$('#selmen').on('change', function() {
$('#theName').slideUp(300);
\t \t
var theVal = $(this).val();
if (theVal) {
console.log('Select value = ' + theVal);
allThere = true; //go
console.log('innerSelect = ' + allThere);
}
});
//Or type new....
$("#theName").on("keyup", function(){
$('#selmen').slideUp(300);
if ($('#theName').val() != '') {
console.log('key value = ' + $(this).val());
allThere = true; //stop
console.log('innerName = ' + allThere);
}
});
\t \t \t \t
//check the variable...
//This reports FALS always
if (allThere == false) {
$("#newsub").attr("disabled", "disabled"); //stop
console.log('Base allThere = ' + allThere);
} else {
$("#newsub").removeAttr("disabled"); //go
console.log('Base allThere = ' + allThere);
} \t \t
}); //end doc ready
body { margin: 50px; }
input { display: block; margin: 10px 0;}
#newsub { background: #a00; color:#fff; border: none; padding: 10px 20px; text-align: center;}
#newsub:disabled { background: #333; color:#ccc;}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select name="selmen" id="selmen" class="drop">
<option value="">Pick One</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="text" id="theName" />
<input type="sumbit" name="newsub" id="newsub" value="ADD" />
Если все работало правильно кнопка должна представить краснеют, когда выбран или ввести значение.
Консоль показывает переменную, обновляемую внутри функций. Однако по какой-то загадочной причине переменная не читается в нижнем выражении if/else.
Что мне не хватает?
EDIT:
Дополнительная информация ...
форма загружается через AJAX. Я по существу есть:
$('#formload').on('click', function() {
$('#mainformholder').slideToggle();
$('#mainform').load('_core/inc/mainform.php', function() {
//The snippet above
});
});
Таким образом, переход к функции вне функции document.ready()
также проблематично. (по крайней мере, для меня)
Это имеет смысл .... однако, я не упоминал, что, похоже, также является препятствием. Форма загружается через функцию 'load()'. См. Вопрос «Редактировать». Я попытался переместить функцию в разные местоположения и изменить цель, чтобы быть более конкретным, но все равно не могу заставить это работать. Благодарю. – Scott
Ну, тогда просто положите функцию * внутрь * document.ready. См. Мой отредактированный ответ.Javascript довольно слабый, как это xD – AVAVT
спасибо .. на самом деле девичий упущение с моей стороны. Не выполнял функцию внутри операторов if/else, которые изменяют переменную. Это решает. Еще раз спасибо! – Scott