2

好的,所以我环顾了其他论坛,不明白为什么我的仍然是……GAH。我调用 preventDefault() 所以表单不会提交。我尝试将操作设置为空,然后甚至根本没有在表单标签上提供操作属性。

我也尝试将提交按钮作为按钮而不是提交,但它似乎仍然不想工作。表单仍在加载页面提交..当我不希望它时。我正在尝试使用 AJAX 更新用户商店中商品的价格,以便在不重新加载跨度标签中的页面的情况下更新价格值。

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>

查询:

$('#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 回答
1

好的,好像脚本文件没有以某种方式被包含..即使它出现了..但我不知道因为我使用的是javascript对话框,所以我必须在底部再次包含该脚本对话框。但是当我这样做时,它修复了一切......看起来很奇怪。但是我仍然将另一个问题标记为正确,因为 return false 或比 e.preventDefault(); 更好的选择;

于 2013-07-01T19:01:02.553 回答
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] click 事件而不是表单提交。

于 2013-06-30T02:00:58.813 回答