1

我在移动 jquery 中有一个链接..

  <div data-role="page" id="main" data-title="Main Page">

这里有两个必须由用户填写的文本框。然后给个链接。。

  <a href="#sub" data-role="button" id="save" data-icon="star" data-theme="b" data-transition="flip">Show Employee Data</a>

"sub" 是 data-role="page" 显示这两个文本框的数据。我写在.js ..

  $(document).delegate('#save', 'click', function(e) {
       if(document.getElementById('name').value=="")
       {  alert('Name Not Entered..');e.preventDefault();return false;  }
  });

一切运行良好,警报也显示,但第二页也显示,因为 href 有 id="save"。我只需要在验证第一页后才显示第二页。我做错了吗?请建议..

--EDIT-- 我在chrome的中断模式下看到,在单击href第二页后,第二页被加载,然后进入代码。我必须立即停止第二页的加载。有什么我们可以在 href"$sub" ... > 中写的吗?

4

4 回答 4

1

我认为应该这样做:

$(document).delegate('#save', 'click', function() {
  var valid = undefined;
  $(':text').each( function() {
    valid = valid === undefined || valid ? $(this).val().length > 0 ? false;
  });
  if(valid) {
    return true;
  } else {
    alert('validation failed.'); return false;
  }
});

验证说明:

  1. 有效最初是未定义的
  2. 如果 valid 未定义或为 true,则检查此输入是否有值,如果未将 valid 设置为 false
  3. 如果 valid 不是未定义或为真,则保持为假,因为如果一个输入没有值,则验证失败

如果您想确保他们输入例如超过 3 个字母,请使用$(this).val().length > 2.

于 2012-07-13T11:39:56.583 回答
0

尝试return false;,而不是return;. 这应该会阻止链接的默认行为,或者将事件包含在函数参数 [ function(ev){...] 和 callev.preventDefault();中。

您可能想查看:event.preventDefault() 与 return false

祝你好运!

另外,尝试使用 click() 而不是 delegate() 并且最后缺少括号:

$("#save").click(function(e) {
    if(document.getElementById('name').value=="")
    {  alert('Name Not Entered..');e.preventDefault();return false;  }
})
于 2012-07-13T11:47:13.100 回答
0

您可以尝试这种方式....而不是“a”,您可以拥有 ID

$(function(){

  $("a").click(function(e){

      if($("#txtName").val().length === 0)
      {
        e.preventDefault();
        return false;
      }    
  });
});
于 2012-07-13T12:10:53.893 回答
0

我解决了我的问题..我写了

  $(document).ready(function() 
  {
      $("#save").click(function(e)
      {
          if(document.getElementById('name').value=="")
          {  
             alert('Name Not Entered..');e.preventDefault();return false;  
          }
          if(document.getElementById('surname').value=="")
          {  
             alert('Surname Not Entered..');e.preventDefault();return false;  
          }
      });
  });

});

现在第二页不只是通过单击 href 显示,而是在第一页验证后显示。感谢帮助..

于 2012-07-13T13:28:33.280 回答