2

わかりましたので、他のフォーラムを見回しましたが、なぜ私のフォーラムがまだ... GAHなのかわかりません。フォームが送信されないように preventDefault() を呼び出します。アクションを何も設定せずに、フォームタグにアクション属性をまったく指定しないようにしました。

また、送信ボタンを送信ではなくボタンとして実行しようとしましたが、それでも機能したくないようです。フォームはまだ送信時にページをロードしています..したくない場合。AJAX を使用してユーザーショップのアイテムの価格を更新しようとしているので、span タグでページをリロードせずに価格の値を更新します。

HTML:

<form id="price_form" method="POST" action="http://alkharia.localhost/user/shop/priceitem/3" accept-charset="UTF-8"><input type="hidden" name="csrf_token" value="P0oW2VxJ6HTg79ksIYl6U3R5QKapeFGwkkUKiNlQ">
<div class="row clearfix">
    <div class="full">
        <label for="price">Price</label>
        <input maxlength="6" type="text" name="price" value="0" id="price">    </div>
</div>
<div class="row">
    <div class="full">
        <input type="hidden" name="item_id" value="3">
        <input type="submit" value="Submit">    </div>
</div>

</form>

JQuery:

$('#price_form').submit(function(e) {
   e.preventDefault();
   var price = $('#price').val();
   if((Math.floor(price) == price) && ($.isNumeric(price)) && (price.length <= 6)) {
       var itemID = $('#item_id').val();

       $.ajax({
        type: 'POST',
        url: 'http://'+urlBase+'/user/shop/priceit/'+itemID+'/'+price,
        success: function(msg) {
            $('#cur_price_'+itemID).html(msg);
        }
    });
  } else {
    alert('You can only enter an integer that is less than 999,999!');
    return false;
  }
});
4

5 に答える 5

1

送信をボタンに変更すると、JS をクリック イベントにバインドできます。

<input type='button' /> と <input type='submit' /> の違い

于 2013-06-30T02:05:56.270 に答える
0

e.preventDefault()完全に削除しreturn false;、if/else ステートメントの外に移動します。

条件が満たされると、AJAX 呼び出しが行われます。そうでない場合は、アラートが表示されます。いずれにせよ、フォームは送信されません。

編集されたバージョン:

$('#price_form').submit(function(e) {
    var price = $('#price').val();

    if((Math.floor(price) == price) && ($.isNumeric(price)) && (price.length <= 6)) {
        var itemID = $('#item_id').val();

        $.ajax({
            type: 'POST',
            url: 'http://'+urlBase+'/user/shop/priceit/'+itemID+'/'+price,
            success: function(msg) { $('#cur_price_'+itemID).html(msg); }
        });
    } else {
        alert('You can only enter an integer that is less than 999,999!');
    }

    return false;
});
于 2013-06-30T04:54:57.570 に答える
-1

「送信」入力をアンカータグに置き換え、href を # に設定し、ajax 関数をそれにバインドします。

于 2013-06-30T01:51:31.253 に答える
-1

フォーム送信ではなく、input[type=submit] クリック イベントにイベントをバインドします。

于 2013-06-30T02:00:58.813 に答える