0

我希望使用 Jquery 将输入转换为选择,同时从输入中获取值并将其用作选定选项。但到目前为止,我在下面的代码中只完成了一半。谁能看到哪里出错了?或者也许建议一种替代方法。

HTML

<div class="inputDiv"><input type="text" id="input01" value="1" name="input01"/></div>
<div class="inputDiv"><input type="text" id="input02" value="4" name="input02"/></div>
<div class="inputDiv"><input type="text" id="input03" value="2" name="input03"/></div>
<div class="inputDiv"><input type="text" id="input04" value="1" name="input04"/></div>
<div class="inputDiv"><input type="text" id="input05" value="4" name="input05"/></div>

JS

$(".inputDiv input[type=text]").each(function() {
    var qty = $(this).val();
    var currentId = $(this).attr('id');
    alert(qty + " is a Number");
    alert(currentId + " is a ID");
    $(this).replaceWith('<select id="' + currentId + '" name="" class="NewSelect">' +
          '<option value="1">1</option>' +
          '<option value="2">2</option>' +
          '<option value="3">3</option>' +
          '<option value="4">4</option>' +
          '<option value="5">5</option>' +
        '</select>');

        $("option[value=" +this.qty+ "]").attr('selected', 'selected');
});
4

3 回答 3

1
    $(".inputDiv input[type=text]").each(function() {
        var qty = this.value;
        var currentId = this.id;
        var selectbox = $('<select id="'+currentId+'><option value="-1"></select>');
        $(this).replaceWith(selectbox);
        for(var i = 1; i < 6; i++) {
            var option = document.createElement('option');
            option.value = i;
            $(option).text(i);
            if(i==qty) option.setAttribute('selected','selected');
            selectbox.append($(option));

        }

    });

JSFIDDLE

于 2012-07-13T11:45:43.103 回答
1

尝试这个:

$("input[type=text]").each(function() {
    $(this).parent().replaceWith('<option id=' + this.id + ' value='+ this.value + ' name=' + this.name + ">" + this.value +"</option>")
})        
$('option').wrapAll('</select>')  

演示

于 2012-07-13T11:59:14.090 回答
0

这样做:http: //jsfiddle.net/albertjan/heVc6/3/

在 DOM 中:使 id 唯一

<div class="inputDiv"><input type="text" id="input01" value="1" name="input01"/></div>
<div class="inputDiv"><input type="text" id="input02" value="4" name="input01"/></div>
<div class="inputDiv"><input type="text" id="input03" value="2" name="input01"/></div>
<div class="inputDiv"><input type="text" id="input04" value="1" name="input01"/></div>
<div class="inputDiv"><input type="text" id="input05" value="4" name="input01"/></div>​

在 JavaScript 中:

$(".inputDiv input[type=text]").each(function() {
    var qty = $(this).val();
    var currentId = $(this).attr('id');
    alert(qty + " is a Number");
    alert(currentId + " is a ID");
    $(this).replaceWith('<select id="' + currentId + '" name="" class="NewSelect">' +
          '<option value="1">1</option>' +
          '<option value="2">2</option>' +
          '<option value="3">3</option>' +
          '<option value="4">4</option>' +
          '<option value="5">5</option>' +
          '</select>');

  //this qty instead of this.qty
  //search for an option within the current div.
  $("#" + currentId + " option[value=" + qty + "]").attr('selected', 'selected');
});​
于 2012-07-13T11:42:08.080 回答