【问题标题】:Set Default Value for Select by using value attribute使用 value 属性为 Select 设置默认值
【发布时间】:2013-03-06 22:35:04
【问题描述】:

我有动态创建的选择(下拉)网页,由 shell CGI 脚本创建的网页:

while read line; do  
  textBoxValue=`printf "$line" | cut -d'        ' -f1`
  comboBoxValue=`printf "$line" | cut -d'       ' -f2`

echo "  
  <div id="divId$start_id">
    <input type="text" name="newTexdtBox$start_id" id="newTextBox" value='$textBoxValue' /> 
    <select name="newComboBox$start_id" id="newComboBox" value="$comboBoxValue">
      <option disabled>pls select</option>
      <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>
      <option value="6">6</option>
      <option value="7">7</option>
      <option value="9">all</option>
    </select>
    <a href='javascript:void(0)' onclick='return removeThisElement($start_id)'>Remove This</a> 
  </div>
  <a href='javascript:void(0)' onclick='return getSelects()'>getSelects</a>

  "

  start_id=$((start_id+1))
  count=$((count + 1))
done < my_conf

每个 Select 对象都有自己的属性 value=$comboBoxValue。我想在页面加载时将此值属性设置为选中状态。建议的解决方案是 (http://snipplr.com/view/67752/set-default-value-for-select-dropdown-lists-using-value-attribute/) 但它似乎不起作用,因为 this.getAttribute("value") 不返回任何内容。

如何使用 value 属性为 Select(下拉列表)设置默认值?

【问题讨论】:

  • 看起来您动态地进行了多项选择。你应该使 id 与 name 属性匹配,这样你就不会得到多个具有相同 id 的元素,这可能会导致你各种 greif

标签: javascript jquery html cgi


【解决方案1】:

试试

<select name="newComboBox$start_id" id="newComboBox" value="$comboBoxValue">
      <option value="" selected='selected'>pls select</option>
      <option value="1">1</option>

【讨论】:

  • 每次加载页面时选择的值可能不同,因此在这种情况下我不能使用“selected='selected'”选项
【解决方案2】:

如果你想用 jQuery 解决它

$(function(){
    $('select[value]').each(function(){
        $('option[value="' + $(this).attr('value') + '"]', this).prop('selected', true);
    });
});

演示:Fiddle

但最佳解决方案是使用 html 标记本身来解决它。 (我不知道 cgi 脚本),但是类似

<select name="newComboBox$start_id" id="newComboBox">
    <option disabled>pls select</option>
    <option #if ($comboBoxValue == 1) { selected="selected"} value="1">1</option>
    <option #if ($comboBoxValue == 2) { selected="selected"} value="2">2</option>
    <option #if ($comboBoxValue == 3) { selected="selected"} value="3">3</option>
    ....
</select>

【讨论】:

  • 得到错误未捕获的错误:语法错误,无法识别的表达式:option[value= + $(this).attr(value) + ]
  • 看起来您缺少 '"s
【解决方案3】:

解决方案http://snipplr.com/view/67752/set-default-value-for-select-dropdown-lists-using-value-attribute/ 工作正常,我只是在Shell 脚本(getAttribute(\"value\")) 渲染函数时忘记了\ 符号。

这很好用(从 CGI Shell 脚本渲染时):

\$(document).ready(function() {
  \$('select[value]').each(function(){  
    \$(this).val(this.getAttribute(\"value\"));        
  });                                                 
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    • 2010-10-16
    • 2016-04-23
    • 2012-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多