Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在购物车中提交前检查有效整数数量_Javascript_Jquery_Jquery Ui_Validation_Form Submit - Fatal编程技术网

Javascript 如何在购物车中提交前检查有效整数数量

Javascript 如何在购物车中提交前检查有效整数数量,javascript,jquery,jquery-ui,validation,form-submit,Javascript,Jquery,Jquery Ui,Validation,Form Submit,购物车数量输入表单使用下面的代码定义。 数量最初必须为空 表单是使用jquery post()通过ajax提交的 如何在提交前检查数量是否填写了大于0的整数 我尝试了下面的代码,但警报框返回[htmlinputelement],因此检查失败 <form class='browse-addtocart-form' action="<%= Url.Action("AddToCartPost", "Store")%>" method="post"> <

购物车数量输入表单使用下面的代码定义。 数量最初必须为空

表单是使用jquery post()通过ajax提交的

如何在提交前检查数量是否填写了大于0的整数

我尝试了下面的代码,但警报框返回[htmlinputelement],因此检查失败

    <form class='browse-addtocart-form' action="<%= Url.Action("AddToCartPost", "Store")%>" method="post">
       <input class='amount ui-corner-all' name="quantity" type="number" value=""
     size="3" min="0" step="1" /></span>
    <input type="submit" value="Add to cart" />
       </form>
  <script>    
    $(function() {
$(".browse-addtocart-form").submit(function(event){
    var $form = $(this);
    var serializedData = $form.serialize();
    alert($form[0].quantity);
    if ($form[0].quantity==="" || $form[0].quantity==="0") {
      alert('Please fill quantity with non zero integer');
      event.preventDefault();
      return;
      }
    $.post('<%= Url.Action("AddToCart", "Store")%>',
      serializedData, function(response) {
          $("#cart-status").text(response.Total);
          showMessage(response.Message);
          showFadeOutMessage(response.Message);
        }));
   event.preventDefault();
  });
  });
      </script>

$(函数(){
$(“.browse addtocart form”).submit(函数(事件){
var$form=$(此);
var serializedData=$form.serialize();
警报($form[0]。数量);
如果($form[0]。数量==“”| |$form[0]。数量==“0”){
警报(“请用非零整数填写数量”);
event.preventDefault();
返回;
}
$.post(“”,
序列化数据,函数(响应){
$(“#购物车状态”).text(response.Total);
showMessage(response.Message);
showFadeOutMessage(response.Message);
}));
event.preventDefault();
});
});

使用jquery、jquery UI、ASP.NET MVC2。

关于
事件的小说明。preventDefault()。您可以返回false;`这也将停止发送您的帖子,您甚至不需要事件参数


因为您已经有了
var serializedData=$form.serialize()
,我建议您使用
serializedData.quantity

一个关于
事件.preventDefault()的小注释从中提取“数量”。您可以返回false;`这也将停止发送您的帖子,您甚至不需要事件参数


因为您已经有了
var serializedData=$form.serialize()
,我建议您使用
serializedData从中提取“数量”。数量

最简单的方法可能是调用parseInt并检查它是否返回NaN

var q = parseInt($form[0].quantity, 10);
if(isNaN(q) || q === 0){
  alert('Please fill quantity with non zero integer');
}

编辑以将base=10添加到parseInt,并使用isNaN()。如果不添加显式基数10,parseInt将把以零开头的字符串误认为是八进制数,十六进制也是如此。

最简单的方法可能是调用parseInt并检查它是否返回NaN

var q = parseInt($form[0].quantity, 10);
if(isNaN(q) || q === 0){
  alert('Please fill quantity with non zero integer');
}
编辑以将base=10添加到parseInt,并使用isNaN()。如果不添加显式的基数10,parseInt将把以零开头的字符串误认为是八进制数,而把以零开头的字符串误认为是十六进制数。

试试看

$(function() {
    $(".browse-addtocart-form").submit(function(event) {
        var $form = $(this);
        var serializedData = $form.serialize();
        if (this.quantity.value === "" || this.quantity.value === "0") {
            alert('Please fill quantity with non zero integer');
            return false;
        }
        $.post('<%= Url.Action("AddToCart", "Store")%>',
                serializedData, function(response) {
                    $("#cart-status").text(response.Total);
                    showMessage(response.Message);
                    showFadeOutMessage(response.Message);
                });
        return false;
    });
});
$(函数(){
$(“.browse addtocart form”).submit(函数(事件){
var$form=$(此);
var serializedData=$form.serialize();
如果(this.quantity.value==“”| | this.quantity.value===“0”){
警报(“请用非零整数填写数量”);
返回false;
}
$.post(“”,
序列化数据,函数(响应){
$(“#购物车状态”).text(response.Total);
showMessage(response.Message);
showFadeOutMessage(response.Message);
});
返回false;
});
});
试试看

$(函数(){
$(“.browse addtocart form”).submit(函数(事件){
var$form=$(此);
var serializedData=$form.serialize();
如果(this.quantity.value==“”| | this.quantity.value===“0”){
警报(“请用非零整数填写数量”);
返回false;
}
$.post(“”,
序列化数据,函数(响应){
$(“#购物车状态”).text(response.Total);
showMessage(response.Message);
showFadeOutMessage(response.Message);
});
返回false;
});
});

什么是
因此检查失败
?什么是
因此检查失败
?我使用了来自http://stackoverflow.com/questions/5004233/jquery-ajax-post-example的代码为什么在这个高分示例中不使用
return false
?我使用了来自http://stackoverflow.com/questions/5004233/jquery-ajax-post-example为什么在这个高分示例中不使用
return false
?谢谢。我在if语句中添加了
returnfalse
。在这种情况下,警报框仅在第一次单击时显示。对按钮的后续单击将被忽略,按钮单击时不会触发提交事件。如何解决这个问题?恐怕我没有看到任何明显的东西会导致事件只在第一次发生。如果您使用的是Firebug或Chrome的内置调试器,那么一个可能有助于调试此功能的技巧是计算$(“.browse addtocart form”).data('events'),并检查提交处理程序是否仍然正确绑定。还要检查调试器日志中是否有任何错误,或者在处理程序中放置断点以确保它确实不会触发。
$(“.browse addtocart form”).data('events')
在FireBUg命令提示符中重新定义未定义的事件。它不存在于我的错误中,我花了几个月才意识到这一点$().data('events')从jquery 1.8开始就不推荐使用。相反,您现在必须使用$。_数据($('.browse addtocart form')[0],'events')。谢谢。我在if语句中添加了
returnfalse
。在这种情况下,警报框仅在第一次单击时显示。对按钮的后续单击将被忽略,按钮单击时不会触发提交事件。如何解决这个问题?恐怕我没有看到任何明显的东西会导致事件只在第一次发生。如果您使用的是Firebug或Chrome的内置调试器,那么一个可能有助于调试此功能的技巧是计算$(“.browse addtocart form”).data('events'),并检查提交处理程序是否仍然正确绑定。还要检查调试器日志中是否有任何错误,或者在处理程序中放置断点以确保它确实不会触发。
$(“.browse addtocart form”).data('events')
在FireBUg命令提示符中重新定义未定义的事件。它不存在于我的错误中,我花了几个月才意识到这一点$().data('events')从jquery 1.8开始就不推荐使用。您现在必须使用$。_数据($(')。浏览addtocart表单