2012-04-12 2 views
0

http://jsfiddle.net/KYDPdКнопки увеличения/уменьшения количества полей формы, не допускайте отрицательных чисел?

Есть ли способ сделать минимальное число равным 0 и не позволять пользователю опускаться ниже 0 при нажатии вниз?

<form> 
    <input type="text" name="name" value="0" /> 
    <input type="button" value="up" onclick="this.form.name.value++;" > 
    <input type="button" value="down" onclick="this.form.name.value--;"> 
</form> 

ответ

1

Возможно, вы должны добавить этот JavaScript в function.

<form> 
    <input type="text" name="name" value="0" /> 
    <input type="button" value="up" onclick="this.form.name.value++;" > 
    <input type="button" value="down" onclick="if(this.form.name.value>0)this.form.name.value--;"> 
</form> 

Дополнительные ответа с функциями.

<script> 

function ud_find_text(self) { 
    var children = self.parentNode.getElementsByTagName('input'); 
    for (var i = 0; i < children.length; i++) { 
     if (children[i].getAttribute('type') == 'text') { 
      return children[i]; 
     } 
    } 
} 

function ud_inc(self) { 
    var text = ud_find_text(self); 
    text.value++; 
} 

function ud_dec(self) { 
    var text = ud_find_text(self); 
    if (text.value > 0) text.value--; 
} 

</script> 

<form> 
    <input type="text" name="name" value="0" /> 
    <input type="button" value="up" onclick="ud_inc(this)" > 
    <input type="button" value="down" onclick="ud_dec(this)"> 
</form> 
+0

Это, вероятно, лучше всего один, как мне это нужно повторить около 200 раз в форме. Повторение функции, я думаю, будет за бортом по разметке. – deflime

+0

@deflime Я добавил к ответу, показывающему, как вы могли бы это сделать с помощью функций. Вы определяете функции один раз, а затем используете их снова и снова для каждого поля. Обратите внимание, что предполагается, что поле, которое нужно изменить, всегда является текстовым полем! – diolemo

+0

@deflime Также: вы можете сделать код намного короче с jQuery. – diolemo

2

Это должно сделать трюк. Проверьте, что это значение, прежде чем разрешить каждую операцию. Также добавлен обмен на ввод текста, чтобы узнать ваше минимальное требование. Согласитесь с другим ответом, что это должно быть в функции.

http://jsfiddle.net/xqV6V/1/

<form> 
    <input type="text" name="name" value="0" onchange="if(this.value<0){this.value=0;}" /> 
    <input type="button" value="up" onclick="if(this.form.name.value>=0){this.form.name.value++;}" > 
    <input type="button" value="down" onclick="if(this.form.name.value>0){this.form.name.value--};"> 
</form> 
+0

Могу ли я принять два ответа :)? Добавление onchange велико. Не очень беспокоиться о том, что люди вводят отрицательное число, но, тем не менее, приятное дополнение. – deflime

5

Если отдельные кнопки не нужны и HTML5 вариант вы могли бы просто использовать это:

<form> 
    <input type="number" min="0" name="name" value="0" /> 
</form> 
Смежные вопросы