0
  function send_quick_pm() {
    $.post('/privmsg', {
        'username%5B%5D' : document.getElementById('quick_pm_username').value,
        subject : document.getElementById('quick_pm_subject').value,
        message : document.getElementById('quick_pm_message').value,
        folder : 'inbox',
        mode : 'post',
        post : 1
    }, function(r) {
      alert('PM is sent!');
    });
  }

それは私が使用しているコードです、これは私が使用しているマークアップです-

<form id="privatemessage" class="newmessage">
  <input id="quick_pm_username" placeholder="Message To:" type="text" class="usernameinput"/>
    <input id="quick_pm_subject" placeholder="Subject:" onkeypress="if (event.keyCode==13){return false}" maxlength="64" type="text" class="usernameinput"/>
      <textarea id="quick_pm_message" class="noThis" placeholder="Type your message here..." >     
      </textarea>
   </div>
 <div id="bottombuttons">
   <span class="button">
     <button onClick="send_quick_pm();" class="submitbutton uiButton uiButtonConfirm uiButtonLarge">Submit</button>
    </form>
      <button class="submitbutton cancelButton uiButton uiButtonConfirm uiButtonLarge">Cancel</button>
  </span>
 </div>

マークアップが間違っている可能性があります。これが、本来あるべきようにコーディングする唯一の方法です。

http://jsfiddle.net/n9eNe/

誰でも何か提案できますか?

4

2 に答える 2

0

あなたの要素に追加type="button"します。<button>

<button type="button" onClick="send_quick_pm();" class="submitbutton uiButton uiButtonConfirm uiButtonLarge">Submit</button>
<button type="button" class="submitbutton cancelButton uiButton uiButtonConfirm uiButtonLarge">Cancel</button>

指定しない場合、デフォルトで になりtype="submit"ます。これにより、フォームが送信され、ページが更新されます。これにより、関数の結果が表示されなくなりますsend_quick_pm


また、フォームの終了タグ ( </form>) を最後に移動する必要があります。ここで行ったように、要素のオーバーラップ/インターリーブからは何の役にも立ちません。

于 2012-12-02T20:51:22.130 に答える
0

preventDefault を追加することで、フォームが送信されないようにすることができます。

そして@Leeが指摘したように、マークアップを修正してください!

http://jsfiddle.net/n9eNe/4/

$("#privatemessage").on("submit", function(e){
    $.post('/privmsg', {
        'username%5B%5D' : document.getElementById('quick_pm_username').value,
        subject : document.getElementById('quick_pm_subject').value,
        message : document.getElementById('quick_pm_message').value,
        folder : 'inbox',
        mode : 'post',
        post : 1},
        function(r) {
          alert('PM is sent!');
        });

    e.preventDefault();
});
于 2012-12-02T20:54:58.023 に答える