防止在Jquery中更改Textbox值

时间:2012-11-01 15:56:41

标签: javascript jquery asp.net

  

可能重复:
  disable textbox using jquery?

如何防止使用document.getElementsByName()中的jquery更改文本框值。 有这样的选项。

document.getElementById("Quantity").defaultValue;

是否有任何选项可以阻止我的文本框的值在document.getElementsByName()中更改。 在我的警报之后,我想在条件不匹配时使文本框的值保持不变。 我的代码:

 $(function () {
            $('input[name=Quantity]').blur(allownumbers);
        });
        function allownumbers() {
            var elements = document.getElementsByName('Quantity');
            for (var i = 0; i < elements.length; i++) {
                if (elements[i].value == '' || elements[i].value < 1) {
                    alert('Please enter a valid value');
                    return false;
                }
                else if (elements[i].value > 100) {
                    alert('There is no enough inventory for this product to fulfill your order');
                    return false;
                }
            }
            return true;
        }
  <input id="Quantity" type="text" name="Quantity"/>

任何建议。

编辑: 我尝试使用此代码。

$("#textbox1").removeAttr("disabled"); 

如果我输入200.警报出现并且文本框被禁用,因此我甚至无法在文本框中重新输入正确的值。如何恢复文本框的默认值。 ?

2 个答案:

答案 0 :(得分:1)

就像adamb发布的那样,你可以禁用输入。另一种方法是在输入上设置属性(可能是defaultval ='默认值'),并用defaultval属性替换输入值。

在您的示例中,您的客户最好将输入实际设置为限制。例如,你的条件是100是最大值,所以如果有人输入一个更大的数字,比如200,它会将盒子改为最大值,100。

答案 1 :(得分:1)

您将原始值存储在变量或隐藏字段中,然后在更新失败时替换该值。如果在页面加载时已知范围,则可以使用范围验证。

对于模糊验证,警报通常过于突兀。