【问题标题】:Highlight radio button on pageload在页面加载时突出显示单选按钮
【发布时间】:2013-03-06 12:05:35
【问题描述】:

我在页面顶部有一个单选按钮来显示“没有选择的供应商”,然后是查询循环中的其他几个单选按钮。

<label>
  <input type="radio" id="nosupp" name="supp" onchange="resetSupp(this);">
  No Supplier Chosen
</label>

<cfloop query="supplier"
  <label>
    <input type="radio" id="chk1" name="supp" value="#supplier.id#" onchange="change(this);" <cfif getChosen.RecordCount>checked="Yes"</cfif>>
    Chosen Supplier
  </label>
</cfloop>

所以我已经提交了包含这些按钮的表单,并且选中的按钮存储在数据库中。

然后我使用 getChosen.RecordCount 查询数据库以检查单选按钮的值是否为“真”。

我遇到的问题是 getChosen.RecordCount 选择了正确的单选按钮,但没有我正在使用的红色突出显示。

这是我突出显示按钮的方式:

<script type="text/javascript">
  function change(obj) {
  var tr=obj.parentNode.parentNode;
  var tbl = tr.parentNode.parentNode;
  var inputs = tbl.getElementsByTagName("input");
  for(var i = 0;i<inputs.length;i++)
  inputs[i].parentNode.parentNode.style.backgroundColor='transparent';
  tr.style.backgroundColor=(obj.checked)? 'red' : 'transparent';
}

function resetSupp(obj) {
  var tr=obj.parentNode.parentNode;
  var tbl = tr.parentNode.parentNode;
  var inputs = tbl.getElementsByTagName("input");
  for(var i = 0;i<inputs.length;i++)
  inputs[i].parentNode.parentNode.style.backgroundColor='transparent';
  tr.style.backgroundColor= 'transparent';
}
</script>

如何让数据库中设置为“true”的按钮在页面加载时突出显示?

【问题讨论】:

    标签: javascript coldfusion radio-button pageload cfml


    【解决方案1】:

    您已经编写了函数,但听起来好像您从未在页面加载后调用它来初始化所有内容。

    要遵循最佳做法,您希望在完成body.onload 后调用change(obj)this question 的答案介绍了一些不同的方法。

    最简单/最可靠的 (imo) 是使用 jQuery,但您似乎没有使用它。下一个最好的(同样,imo)是使用document.onload=function 声明。

    除非您只需要初始化一个输入,否则您可能需要编写另一个函数,该函数实际上循环遍历每个输入并调用change(obj)。然后,当 body.onload 触发时,您将调用新的 init() 函数。

    所以,你应该有

    document.onload=init
    

    function init(){
        // loop through all your inputs
        // call change(obj) on each one
    }
    

    edit 我刚刚重新阅读了您的 changeObj 并注意到您正在传递一个元素并使用 parentNode 备份 DOM 树,因此您已经在循环每个输入,所以我的伪代码对于init 而言,它会有点偏离。不过,我可能会使用 getElementsByName 并传入输入组的名称,这样您就不会在每次调用 change(obj) 时都重置每个输入。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-11-17
      • 1970-01-01
      • 1970-01-01
      • 2013-11-25
      • 2013-03-14
      • 2015-12-23
      • 2022-09-23
      相关资源
      最近更新 更多