2010-08-05 4 views
0

Это код в поле ввода дописывания в Java Script, я не получаю там значения в InputBoxдобавить текст JavaScript, не получают значения

<script type="text/javascript"> 
function addInput() 
{ 
    var x = document.getElementById("inputs"); 
    x.innerHTML += "<input type=\"text\" name=\"box[]\" id=\"box[]\"/>"; 
    i++; 
} 
function getdata() 
{ 

} 
</script> 


<input type="button" onmousedown="addInput();" value="add" /> 
<input type="button" value="getvalues" onclick="getdata()" /> 
<div id="inputs"></div> 

ответ

0

код сам должен работать. Попробуйте это: скопируйте addInput из объявления функции в callin onmousedown.
По какой-то причине звонок из mousedown не распознается. Мой JS-движок говорит мне, что addInput (как написано в mousedown) не найден.

+0

я хочу, чтобы получить значение в поле ввода, поле ввода должно быть объявлено как окно массива [] – jagadeesh

+0

Идентификатор имеет чтобы быть уникальным, поэтому поле [] для каждого входа не допускается. box = document.getElementsByName ('box []') должно быть возможным. А затем поля [0] .value – alopix

2

Что вы делаете должно работать, но еще один способ сделать это (немного более эффективным):

function addInput() { 
    var input = createTextInput({ 
     "type": "text", 
     "name": "box[0]", 
     "id":"box[]", 
     "value": "This is a value" 
    }); 
    document.getElementById("inputs").appendChild(input); 
} 

// warning: just to be safe, don't pass any option object that extends any 
// browser's native object or built in objects. 
function createTextInput(options) { 
    var i = document.createElement("input"); 
    for(key in options) { 
     i[key] = options[key]; 
    } 
    return i 
} 

function getValues() { 
    var div = document.getElementById("inputs"); 
    var values = []; 
    var textBoxes = div.getElementsByTagName("input"); 
    for(var i = 0, len = textBoxes.length; i < len; i++) { 
     var box = textBoxes[i]; 
     if(box && box.name === "box[]") {values.push(box.value);} 
    } 
    return values; 
} 

Есть другие способы сделать это, например, используя jQuery, его намного проще и меньше подробностей, но это просто простой способ: ol ls way

+1

. Предложение: вместо передачи атрибутов в качестве отдельных параметров мы можем передать объект с именами атрибутов, значениями как пары ключ/значение (именованные аргументы) и внутри функции, которую мы можем выполнять итерации и устанавливать атрибуты. var input = createTextInput ({id: 'box []', name: 'box []'}) внутри createTextInput (attrs), for (var attr in attrs) {/ * установить атрибут * /} –

+0

@Marimuthu Спасибо, я обновил код – naikus

+0

как мы можем получить значения – jagadeesh

0

Чтобы получить значения полей ввода, назначьте имя полям ввода и вы получите доступ к нему через форму. При наличии несколько полей одного и то же имя, поля будут возвращены в виде массива:

<script type="text/javascript"> 
function addInput() 
{ 
    var x = document.getElementById("inputs"); 
    x.innerHTML += "<input type=\"text\" name=\"userNames\"/>"; 

} 
function getdata() 
{ 
    var form = document.forms['myForm']; 
    //To handle single/multiple input elements 
    var names = !form.userNames[0] ? [form.userNames] : form.userNames; 
    var nameValues = []; 
    for(var index = 0; index < names.length; index++) { 
     nameValues[index] = names[index].value; 
    } 
    return nameValues; 
} 


</script> 

<form name="myForm"> 
<input type="button" onmousedown="addInput();" value="add" /> 
<input type="button" value="getvalues" onclick="alert(getdata())" /> 
<div id="inputs"></div> 
</form>