首页 > 解决方案 > 用于验证的 ajax 成功函数中的两个字段的焦点冲突

问题描述

我已经使用 ajax 对字段模糊进行验证(如果无效则聚焦),但它与下一个字段的 ajax 验证冲突

1.尝试设置全局变量并在下一个字段验证中检查它。2. 将 $(this) 存储在变量中,并在 bind 方法上调用事件。3. 尝试在焦点位于当前字段但在某些条件下不起作用时禁用其他字段。

$('input[name="ledgercode"]')
.bind(
'blur',
   '#ledgercode',
function(e) {
if ($('#dialog1').dialog('isOpen')) {
    e.preventDefault();
} else {
    $this = $(this);
var ledgercd = $(this).val();
if (ledgercd == "") {                            
   document.getElementById("msgbox1").innerHTML = "Code must be entered";

  $(this).focus();
  } else {
  $.ajax({
type : 'POST',
url : 'GL_Servlet?method=ledger_validation',
    dataType : 'json',
    data : {
    "json" : [ ledgercd,company ]
},
   success : function(data) {
    var ldgstat = (data.ldgstat);
    if (ldgstat == false) {
$this.focus(); //consistent focus if value invalid
    document.getElementById("msgbox1").innerHTML = "Invalid Code";
} else if (data.ldgstat == true) {
$('#txt_ldg_name').val(data.ldg_desc);
$this.closest("tr")
.find('input[name="ldg_desc"]').val(data.ldg_desc);
    document.getElementById("msgbox1").innerHTML = "";
}
    }                                            
   });
}
}
   });

如果字段上的值无效,则字段应保持焦点,并且在输入正确的值之前不要离开字段。

标签: javascriptajax

解决方案


通过在 ajax 中设置 (async : false,) 问题得到解决。


推荐阅读