У меня есть следующий скрипт, который отлично работает там, где он активирует кнопку и выбирает опцию на основе некоторых ограничений.проверить, существует ли значение в массиве не работает
<script>
var update_selectopt=function(){
$("tr").each(function(){
if($("input[type='checkbox']", this).is(":checked")){
$('#select',this).removeAttr('disabled');
}
else{
$('#select',this).attr('disabled','disabled');
}
});
};
function updateSubmitButtonState(){
var enableableLineCount= 0;
$("tr").each(function(){
if(isEnableableLine(this))
enableableLineCount++;
});
if(enableableLineCount > 0)
$('[type="submit"]').removeAttr("disabled");
else
$('[type="submit"]').attr("disabled","disabled");
function isEnableableLine(tr){
if(
$("input[type='checkbox']", tr).is(":checked") &&
$("select option[value='no_action']:selected", tr).length == 0
)
return true;
else
return false;
}
}
$(update_selectopt);
$("input[type='checkbox']").on("click",update_selectopt);
$("input[type='checkbox']").on("click",updateSubmitButtonState);
$("select").on("change",updateSubmitButtonState);
</script>
Но когда я добавить код для проверки значения в массиве и выскакивает окно предупреждения, если нет, то он не работает, а также нарушение кода - создание кнопки неактивна все время, выберите опции все активные все время. Кроме того, я немного смущен, когда поставить код, чтобы кнопка неактивна все время, пока все условия не верны.
Полный сценарий
<script>
var state_list_swap=["AVAILABLE","IMPAIRED"]
var state_list_shut=["ERROR"]
var state_list_scan=["SUSPENDED"]
var update_selectopt=function(){
$("tr").each(function(){
if($("input[type='checkbox']", this).is(":checked")){
$('#select',this).removeAttr('disabled');
}
else{
$('#select',this).attr('disabled','disabled');
}
});
};
function updateSubmitButtonState(){
var enableableLineCount= 0;
$("tr").each(function(){
if(isEnableableLine(this))
enableableLineCount++;
});
if(enableableLineCount > 0)
$('[type="submit"]').removeAttr("disabled");
else
$('[type="submit"]').attr("disabled","disabled");
function isEnableableLine(tr){
if(
$("input[type='checkbox']", tr).is(":checked") &&
$("select option[value='no_action']:selected", tr).length == 0
)
return true;
else
return false;
}
}
$(update_selectopt);
$("input[type='checkbox']").on("click",update_selectopt);
$("input[type='checkbox']").on("click",updateSubmitButtonState);
$("select").on("change",updateSubmitButtonState);
$("input[type='submit']").click(function(){
$("tr").each(function(){
if (
$("select option[value='swap']:selected",tr)
){
var cells=$(this).find('td');
$(cells).each(function(){
if (jQuery.inArray($(this).text(),state_list_swap)!=-1){
alert('swap is allowed only with "AVAILABLE","IMPAIRED" states');
}
});
}
else if(
$("select option[value='scan']:selected",tr)
){
var cells=$(this).find('td');
$(cells).each(function(){
if (jQuery.inArray($(this).text(),state_list_scan)!=-1){
alert('scan is allowed only with "SUSPENDED');
}
});
}
else if(
$("select option[value='shut']:selected",tr)
){
var cells=$(this).find('td');
$(cells).each(function(){
if (jQuery.inArray($(this).text(),state_list_shut)!=-1){
alert('shut is allowed only with "ERROR" states');
}
});
}
}
});
</script>
Вы проверили на наличие ошибок в консоли? – Pointy
^что есть недостающие скобки для последнего цикла 'each' – adeneo
Я бы переформатировал ваш вопрос, поставив вашу проблему в начале и используя более мелкие фрагменты кода проблемного кода. Это облегчит для других ответ на ваш вопрос. –