从选择中选择选项时,更改输入的值(写入输入)

时间:2016-04-14 12:24:28

标签: jquery html

您好,

我收到了以下输入

<input type="text" class="input-text" value="South Yorkshire" placeholder=" county" name="calc_shipping_state" id="calc_shipping_state">

我需要更改选项下拉选项。问题是输入使用数据库进行验证,我无法访问HTML。所以我隐藏了输入并使用jQuery添加了一个select选项,以便将选择的选项写入输入。我不确定如何在选择中选择的选项中写入隐藏输入。

使用.change().val()

这是添加选择的代码:

  $('#calc_shipping_state_field').after("<p class='form-row form-row-wide' id='calc_shipping_state_field' id=''> <select name='' id='county_selected' class='' rel=''> <option value=''>Select a county…</option>  <option value='BE'>Bedfordshire</option> <option selected='selected' value='BER'>Berkshire</option> <option value='BRI'>Bristol</option> <option value='BUCK'>Buckinghamshire</option> <option value='CA'>Cambridgeshire</option> <option value='CHES'>Cheshire</option> <option value='LN'>City of London</option> </select></p>");

我在伯克希尔&#39;添加了selected='selected'。默认选项

<option selected='selected' value='BER'>Berkshire</option>

这是我尝试使用的代码.change()但是没有用。

$( "#county_selected" ).change(function() {
    var county = $("select :selected").county(function () {
    var txt = $(this).text();
    }).get();
    //add it to div
    $('input.input-text').val('county');
  });

我希望有人可以帮助我。

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以使用find()获取所选选项,然后在其上调用.text()。在更改功能中,this指的是选择,因此无需重新选择。

$( "#county_selected" ).change(function() {
    $('input.input-text').val($(this).find('option:selected').text());
});

上面的代码必须在添加select后运行。如果您愿意,可以委托父母或文档,并且在添加选择后不必运行:

$(document).on('change', '#county_selected', function(){
    $('input.input-text').val($(this).find('option:selected').text());
});

答案 1 :(得分:1)

嗯,您可以使用JQuery replaceWith Method

来完成此操作
$( document ).ready(function() {
  /*
  * Make your new HTML ELEMENT
  */
  var newHTMLelment  = "<select name='calc_shipping_state'>";
      newHTMLelment += "<option value='01'>01</option>";
      newHTMLelment += "<option value='02'>02</option>";
      newHTMLelment += "</select>";
  /*
  * Replace current HTML element with new one
  */
  $( "#calc_shipping_state" ).replaceWith( newHTMLelment );

});