Javascript 等待jquery中的两个值发生更改
我有两个表单字段,只想在两者都有值时使用jquery发布这些值。我已经试过了,但一定有更好的办法。我认为这种方式可能会导致错误Javascript 等待jquery中的两个值发生更改,javascript,jquery,Javascript,Jquery,我有两个表单字段,只想在两者都有值时使用jquery发布这些值。我已经试过了,但一定有更好的办法。我认为这种方式可能会导致错误 $('#RFID').change(function(e){ if($(this).val() != '' && $('#STATION_ID').val() != ''){ } }); 这不是一个特别糟糕的方法。不过可以稍微清理一下。我会这样说: var $fields = $(
$('#RFID').change(function(e){
if($(this).val() != '' && $('#STATION_ID').val() != ''){
}
});
这不是一个特别糟糕的方法。不过可以稍微清理一下。我会这样说:
var $fields = $('#RFID, #STATION_ID').change(function(e) {
if ($fields[0].val() && $fields[1].val()) {
// post it
}
});
编辑:上面的代码假设您希望在拥有这两个值后立即发布。再看看你的问题,我可能看错了。如果您只是想阻止表单发布,除非您同时具有这两个值,那么您确实需要:
$('form').submit(function(e) {
if (!$fields[0].val() || !$fields[1].val()) e.preventDefault();
});
这不是一个特别糟糕的方法。不过可以稍微清理一下。我会这样说:
var $fields = $('#RFID, #STATION_ID').change(function(e) {
if ($fields[0].val() && $fields[1].val()) {
// post it
}
});
编辑:上面的代码假设您希望在拥有这两个值后立即发布。再看看你的问题,我可能看错了。如果您只是想阻止表单发布,除非您同时具有这两个值,那么您确实需要:
$('form').submit(function(e) {
if (!$fields[0].val() || !$fields[1].val()) e.preventDefault();
});
您只需在发布帖子之前进行相同的检查:
if ($.trim($('#RFID').val()) != '' && $.trim($('#STATION_ID').val()) != '') {
// do post
}
您只需在发布帖子之前进行相同的检查:
if ($.trim($('#RFID').val()) != '' && $.trim($('#STATION_ID').val()) != '') {
// do post
}
可能会在所有可以生成表单自动提交的字段中分配一个on-change处理程序 可能会针对每个可以参与自动提交的字段添加一个类 我知道的代码很少,但设置了意图并在一个地方收集了验证 希望能有帮助
$('.auto-submit').change(function(e) {
// collect all the auto submit fields and make sure they are not empty
for( field in $('.auto-submit') )
if( field.val() == '' ) return; // all fields not there
}
// do form submit here
} );
可能会在所有可以生成表单自动提交的字段中分配一个on-change处理程序 可能会针对每个可以参与自动提交的字段添加一个类 我知道的代码很少,但设置了意图并在一个地方收集了验证 希望能有帮助
$('.auto-submit').change(function(e) {
// collect all the auto submit fields and make sure they are not empty
for( field in $('.auto-submit') )
if( field.val() == '' ) return; // all fields not there
}
// do form submit here
} );
又好又简单。尽管我一直认为用jQuery测试字段长度是最好的做法,比如
if($fields[0].val().length>0)
:)如果您愿意,可以这样做,但是.val()
总是返回一个字符串,因此如果存在值,则在所有情况下都是“真实的”。我会尝试在两个值都已填写完毕后立即发布表单值,这样第一个代码段就是您想要的。只需执行类似于$(this)的操作。最近的('form')。submit()
,其中显示//post it
。您可以从声明它的行中调用$fields吗?我得到了一个好的和简单的错误。尽管我一直认为用jQuery测试字段长度是最好的做法,比如if($fields[0].val().length>0)
:)如果您愿意,可以这样做,但是.val()
总是返回一个字符串,因此如果存在值,则在所有情况下都是“真实的”。我会尝试在两个值都已填写完毕后立即发布表单值,这样第一个代码段就是您想要的。只需执行类似于$(this)的操作。最近的('form')。submit()
,其中显示//post it
。您可以从声明它的行中调用$fields吗?我有个错误