将输入转换为选择

时间:2012-07-13 11:33:49

标签: jquery select input option

我希望使用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');
});

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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>')  

DEMO

答案 2 :(得分: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');
});​