在选择同一下拉框中的值时更改下拉框的选定值

时间:2011-04-12 11:05:58

标签: jquery html

我正在尝试为我的网站创建一个'网上银行'风格的身份验证,用户通过3个下拉框从秘密密码中选择第5个和第6个以及[无论]数字,每个下拉框代表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');
}

我有一个'hiddenfield'存储用户选择的值(不能依赖下拉框的值),上面的函数实际上是'混淆'。

1 个答案:

答案 0 :(得分:0)

你能解释一下这个功能吗?只有一个选择元素吗?这可能是你想要的中途。看到它在这里工作: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('*');
   }
});