2010-11-24 9 views
4

誰かが助けることができますか?JQuery:テキストボックスからイベントを変更するhtmlコントロールはhtmlボタン(ライブイベント)からClickイベントをキャンセルしています

私は、テキストボックスの変更イベントとボタンのクリックイベント(すべてhtml)を持っています。

ボタンをクリックすると、クリックイベントが発生します。

しかし、私はテキストボックス内の何かを変更してボタンをクリックすると、変更イベントが発生しますが、これは素晴らしいですが、私は決してボタンのクリックイベントを取得しません。

これは私のjqueryです。これを回避する方法はありますか?私は迷っています。

$('#myTextbox').live('change', function() { 
     $.ajax({ 
      type: "POST", 
      url: "test.aspx/GetDate", 
      data: "{}", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      success: function(msg) { 
       alert('the date is ' + msg.d); 
      } 
     }); 


    }); 

    $('#myButton').live('click', function() { 
     alert('i am in click'); 

    }); 

EDIT

私は本当に単純なHTMLフォームを作成し、第1の変化火事かどうかわから十分クリックイベントが発生しません - 実際にこの例では私が使用しているblurイベントを...同じことです

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
    <title></title> 

    <script src="Scripts/jquery-1.4.2.min.js" type="text/javascript"></script> 
    <script type="text/javascript"> 
    $(function() { 
     $('#htmlbutton').bind('click', function() { 

      alert('i am in click'); 

     }); 



     $('#htmltextbox').bind('blur', function() { 

      alert('in blur'); 

     }); 
    }); 
</script> 

</head> 
<body> 
    <form id="form1"> 
    <div> 
     <input id="htmlbutton" type="button" value="button" /><input id="htmltextbox" type="text" /></div> 
    </form> 
</body> 
</html> 
+0

たとえば、jsFiddleでサンプルページを作成できますか?本当に何でもかまいません。フォームが提出していないと確信していますか?たぶんあなたは最後に偽を返すことによってクリックイベントを取り消すべきです.. – Harmen

+0

私はかなり提出していないと確信しています...私は警告( '私はクリックして');テキストボックスに何も入れないと、変更イベントは発生しませんが、ボタン上でクリックイベントが発生します。 – Martin

+0

私はあなたの問題を確認しました。私はそれを少し明確にしたいと思っています。あなたが入力からボタンをクリックするようになったのです。クリックイベントは発生しません。 – shoebox639

答えて

3

あなたのアラートがボタンクリックイベントを押しつぶしているようです。アラートの代わりに両方の要素の色を変更すると、両方のイベントが発生することがわかります。

マウスボタンがボタンを押下するとすぐに、ぼかし/変更イベントが発生します。アラートがあるので、クリックしてクリックするだけでボタンにボタンが登録されることはありません。これは、クリックイベントが発生するために必要なものです。

ajaxは終了し、次のイベントに行ってください。コールがすぐに戻ってきていなければ、とにかくクリックが押しつぶされない限り。

+0

うわー、ありがとう!できます!それは警告だった!これは正常ですか? – Martin

+0

私が説明したように、クリックしても発射されるためには、マウスを下げてからバックアップしなければなりません。マウスでボタンを押したままドラッグするだけでクリックイベントが発生しないことを確認できます。まあ同じことがここで起こった。それはマウスを登録しましたが、警告が表示されました。私はあなたがokをクリックして離れてマウスを移動したと推定します。警告ダイアログは同期的なので、JavaScriptの実行はすべて停止します。その後、マウスアップは決して登録されません。 – shoebox639

+0

クール説明!ありがとう – Martin

関連する問題