1

私はモバイルjqueryにリンクを持っています..

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

ここには、ユーザーが入力する必要がある 2 つのテキスト ボックスがあります。それからここにリンクがあります..

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

「sub」は、これら 2 つのテキストボックスのデータを表示する data-role="page" です。私は.jsで書いた..

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

すべて正常に動作し、Alert も表示されますが、href が id="save" であるため、2 ページ目も表示されます。私が必要とするのは、最初のページの検証後にのみこの2番目のページを表示することです..私は何か間違っていますか?? 提案してください..

--EDIT-- Chrome のブレーク モードで、href をクリックした直後に 2 ページ目が読み込まれ、コードに入るのを見ました。この 2 ページ目の読み込みをすぐに停止する必要があります.. 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. valid は最初は未定義です
  2. valid が未定義または true の場合、この入力に値があるかどうかをチェックし、valid が false に設定されていない場合
  3. valid が undefined または true でない場合は、false のままにしてください。1 つの入力に値がない場合、検証が失敗するためです。

たとえば 3 文字以上を確実に入力させたい場合は、make $(this).val().length > 2.

于 2012-07-13T11:39:56.583 に答える
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;  
          }
      });
  });

});

2 番目のページは、href をクリックするだけでは表示されませんが、最初のページの検証後に表示されます。手伝ってくれてありがとう..

于 2012-07-13T13:28:33.280 に答える
0

あなたはこの方法を試すことができます....「a」の代わりに、IDを持つことができます

$(function(){

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

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

return false;の代わりに を試してくださいreturn;。これにより、リンクのデフォルトの動作が妨げられるか、関数の引数 [ function(ev){...] と callにイベントが含まれますev.preventDefault();

チェックアウトすることをお勧めします: event.preventDefault() と return false

幸運を!

また、delegate() の代わりに click() を使用してみてください。最後に括弧がありません。

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