Javascript jQuery-禁用基于同一行上的另一个元素的选择
在一个表中,我有一行有两个输入-一个选择和一个文本。我想要实现的是,如果一个有一个值,那么另一个(在同一行上)应该禁用。当文本框中有值时,此选项可以正确地onload,但当仅选择框中有值时,此选项似乎不起作用 正如您在这里的示例中所看到的:“change”事件工作正常,但它在加载时不工作 任何帮助都将不胜感激 我正在使用jQuery1.5.2以及Google Chrome和IE9Javascript jQuery-禁用基于同一行上的另一个元素的选择,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,在一个表中,我有一行有两个输入-一个选择和一个文本。我想要实现的是,如果一个有一个值,那么另一个(在同一行上)应该禁用。当文本框中有值时,此选项可以正确地onload,但当仅选择框中有值时,此选项似乎不起作用 正如您在这里的示例中所看到的:“change”事件工作正常,但它在加载时不工作 任何帮助都将不胜感激 我正在使用jQuery1.5.2以及Google Chrome和IE9 使用最终代码更新 感谢@scoopseen和@eicto的支持。基于这两个答案,这里是最后的代码。我希望它能帮助别
使用最终代码更新 感谢@scoopseen和@eicto的支持。基于这两个答案,这里是最后的代码。我希望它能帮助别人
$(document).ready(function() {
$(".validation-compare").change(runRowValidation);
$(".validation-compare").each(runRowValidation);
});
function runRowValidation() {
var $me = $(this),
$other = $('.validation-compare',$me.closest("tr")).not($me),
mVal = $me.val(),
oVal =$other.val();
if(mVal != "" && oVal == "") {
$me.removeAttr('disabled');
$other.attr('disabled',1);
} else if(mVal == "" && oVal != "") {
$other.removeAttr('disabled');
$me.attr('disabled',1);
} else {
$other.removeAttr('disabled');
$me.removeAttr('disabled');
}
}
您可以在以下位置看到它的作用:您需要分离该函数,并在单击事件和页面加载时调用它。大概是这样的:
jQuery(function($){
function myFunction() {
// do somestuff
}
// myFunction needs to be called when select is clicked and when page is loaded
$('#someelement').click(myFunction);
$(document).ready(myFunction);
});
var validme=function(){
var me=$(此);
me.removeClass('validation-compare');
if(me.val()){
console.log(me);
me.addClass('valid');
me.parent().parent().find('.validation compare').attr('disabled',1);
me.addClass('validation-compare');
返回;
}
me.removeClass('valid');
如果(me.parent().parent().find('.validation compare.valid').length我认为不需要将类设置为valid
,只需替换
var $otherInput = $('.validation-compare', $parent).not('.valid');
借
这将解决您在onload上的问题。这里有一个onload事件已设置并正在运行。我不希望在单击元素时触发事件-仅更改。这如何解决存在值时选择的问题?$(“#someelement”)。更改(myFunction);
var $otherInput = $('.validation-compare', $parent).not('.valid');
var $otherInput = $('.validation-compare', $parent).not($me);