2016-02-28 2 views
-2

привет, я хочу создать динамические номера полей ввода, используя форму html для отправки и javascript для динамического ввода.javascript и html-форму для динамического ввода

в HTML форме

<form action="" method="post" name="detParameterForm"> 
<fieldset class="det"> 
<legend>Closure Level</legend> 
Number of members:<input type="text" id="member" name="member" value=""><br /> 
<button id="btn" onclick="addinputFields()">Button</button> 
<div id="container"/> 
</fieldset> 
<button type="submit" value="Submit">submit</button> 
</form> 

в яваскрипте

function addinputFields(){ 
    var number = document.getElementById("member").value; 
    for (i=0;i<number;i++){ 
     var input = document.createElement("input"); 
     input.type = "text"; 
     container.appendChild(input); 
     container.appendChild(document.createElement("br")); 
    } 
} 

но не работает я беру ошибку fiddle

+1

Ваш JsFiddle не соответствует вопрос ... Можете ли вы объяснить ** "но не работает я беру ошибку" ** – NewToJS

+0

jsfiddle http://jsfiddle.net/aaki/hMJEy/1 /, похоже, имеет разные 'js', чем в вопросе? – guest271314

+0

@ guest271314 no i dont want this – user27818

ответ

0

в первую очередь, вы должны получить объект контейнера. И затем используйте контейнер переменной для вызова appendChild. и он может быть обработан

+0

Я не понимаю вас, я новичок – user27818

0

Нажав на элемент button, который является потомком form, родитель отправит form. Попробуйте заменить span элемент для button и укладки span появляться как button, чтобы предотвратить подачу form на click события

function addinputFields() { 
 
    var number = document.getElementById("member").value; 
 
    for (i = 0; i < number; i++) { 
 
    var input = document.createElement("input"); 
 
    input.type = "text"; 
 
    container.appendChild(input); 
 
    container.appendChild(document.createElement("br")); 
 
    } 
 
}
form span { 
 
    appearance: button; 
 
    -moz-appearance: button; 
 
    -webkit-appearance: button; 
 
    padding:2px; 
 
}
<form action="" method="post" name="detParameterForm"> 
 
    <fieldset class="det"> 
 
    <legend>Closure Level</legend> 
 
    Number of members: 
 
    <input type="text" id="member" name="member" value=""> 
 
    <br /> 
 
    <span id="btn" onclick="addinputFields()">Button</span> 
 
    <div id="container" /> 
 
    </fieldset> 
 
    <button type="submit" value="Submit">submit</button> 
 
</form>

+0

Но зачем стилизовать что-то похожее на кнопку, когда вы можете использовать фактическую кнопку и event.preventDefault(); '? Атрибут onclick находится только на 'button', а не на кнопке submit ... – NewToJS

1

я добавил комментарии в обновленный исходный код, это должно работать найти для вы.

Изменения:event.preventDefault(); и parseInt() используются.

function addinputFields(){ 
 
    // Disable Default Action (Form Posting) 
 
    event.preventDefault(); 
 
    // parseInt() - The value entered should be a number/integer 
 
    var number = parseInt(document.getElementById("member").value); 
 
    for (i=0;i<number;i++){ 
 
     var input = document.createElement("input"); 
 
     input.type = "text"; 
 
     container.appendChild(input); 
 
     container.appendChild(document.createElement("br")); 
 
    } 
 
}
<form action="" method="post" name="detParameterForm"> 
 
<fieldset class="det"> 
 
<legend>Closure Level</legend> 
 
Number of members:<input type="text" id="member" name="member" value=""><br /> 
 
<button id="btn" onclick="addinputFields()">Button</button> 
 
<div id="container"/> 
 
</fieldset> 
 
<button type="submit" value="Submit">submit</button> 
 
</form>

Если у вас есть какие-либо вопросы относительно исходного кода выше, пожалуйста, оставьте комментарий ниже, и я отвечу как можно скорее.

Надеюсь, это поможет. Счастливое кодирование!

CodePen

+0

thnx вы очень много, но если копировать - вставьте свой код в скрипку, тогда не работайте – user27818

+0

@ guest271314, так как вы смешали мой ответ со своим. Вам не нужно 'event.preventDefault(); 'в вашем ответе, потому что у вас есть пролет в виде кнопки, пролет не будет запускать форму submit. Если вы хотите попробовать совместить свой ответ с вашим, по крайней мере, понять мой ответ, прежде чем пытаться смешивать его с собой. – NewToJS

+0

@hellas запускает файл html локально. использование форм на jsfiddle не является хорошей идеей. – NewToJS

Смежные вопросы