【问题标题】:Changing the selected value of a Pull Down Box on selection of a value in the same Pull Down Box在同一下拉框中选择值时更改下拉框的选定值
【发布时间】:2011-04-12 19:35:04
【问题描述】:

我正在尝试为我的网站创建一个“在线银行”风格的身份验证,其中用户通过 3 个下拉框从秘密密码短语中选择第 5 和第 6 以及 [whatever] 数字字母,每个下拉框代表 1 个字母密码短语,由应用随机选择,一旦他们在每个下拉菜单中选择了请求的数字,下拉菜单应显示星号 [*] 而不是显示秘密密码的数字。

我还使用 jQuery 来操作和捕获选择框上的事件。

我目前正在使用

$('#selectboxID').change(function() {pulldownObfuscation('selectboxID','hfID')});

但我试过了

.blur()   and  .click()

并且使用自定义函数来计算点击次数并在第二次点击时做出反应也会失败。

我当前的方法不是很流畅,对“onChange”事件做出反应,然后更改内容似乎会使浏览器有点混淆,因此“不流畅”。使用键盘效果最好,但使用鼠标意味着焦点在文本框之间跳动很烦人,如果我“单击并按住”文本框,效果最好。

对使用 jquery 的最佳跨浏览器解决方案有何想法?

function pulldownObfuscation(pullDownID,hfID) {
        var selectedVal = new String($('#' + pullDownID + ' :selected').val());
        if (selectedVal == '*') return;
        $('#' + hfID).val(selectedVal);
        $('#' + pullDownID + ' option:eq(1)').attr('selected','selected');
}

我有一个“隐藏字段”存储用户选择的值(不能依赖下拉框的值),上面的函数执行实际的“混淆”。

【问题讨论】:

  • 能否粘贴jsfiddle.net的代码
  • 你应该避免使用new String() 制作字符串的方式,它更冗长加上typeof 会告诉你它是一个对象。

标签: jquery html


【解决方案1】:

您能再解释一下这个功能吗?只有一个选择元素吗?这可能是你想要的部分。在这里看到它的工作:http://jsfiddle.net/Yre8X/

$('select option').click(function(){
   var selectedVal = $(this).val();
   if (selectedVal=='*'){
      return;
   }else{
      $(this).parent().attr('disabled','true');
      $(this).parent().next('#hfID').val(selectedVal);
      $(this).parent().children('option').text('*').val('*');
   }
});

【讨论】:

  • 你的解决方案运行得非常顺利,fiddle 也很好用,这是一个很棒的网络工具!不幸的是,使用该工具,我无法复制我遇到的错误。 jsfiddle.net/Ninjanoel/Xx45p 谢谢你的回答,我已经调整了你的解决方案,所以我可以在一个函数中处理它,使用 ID 来为一切供电。我没有看到同样的错误,但是,我现在使用的是“点击”而不是“更改”
  • 这有点紧凑,如果它有效,请告诉我:) jsfiddle.net/Xx45p/1
  • 不幸的是,我需要原始“小提琴”中的“3 ifs”,因为无法使用您替换我的 if 的内容来选择实际实现的控件。而且我发现“单击”方法不适用于键盘输入(选择 [使用选项卡] 的最流畅的方法),所以我确实需要原始的“更改”事件。感谢您的帮助 Calum。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-15
  • 1970-01-01
相关资源
最近更新 更多