用于编辑文本字段的按钮。添加jQuery到混合

时间:2012-08-09 11:27:05

标签: jquery button input

我的屏幕键盘工作正常一段时间。

我最近不得不将jQuery添加到系统中,现在它不再起作用了。按下按钮什么都不做,因为当按下按钮时文本输入不再具有焦点,我无法从我的jscript重新聚焦它。

输入html(注意使用优秀的jq_watermark - 我需要jQuery的原因):

<input class="search jq_watermark" id="barcode" name="barcode" type="text" title="Please enter search criteria."/>

以下是其中一个按钮的html:

<td onclick="addChar('Q')"><button class="osk" id="Key_Q" value="Q">Q</button></td>

这是addChar脚本。注意许多尝试集中这个领域,现在都失败了jQuery:

// The field the keyboard should edit.
field = document.forms['main'].elements.item('barcode');

function addChar(c) {
  console.log("Char("+c+")");
  field.focus();
  if(field.maxLength == -1 || field.value.length < field.maxLength) {
    // Handle different browsers.
    if (field.selectionStart || field.selectionStart == '0') {
      var start = field.value.substr(0,field.selectionStart);
      var end = field.value.substr(field.selectionEnd,field.length);
      field.value = start + c + end;
    } else if (document.selection) {
      field.focus();
      var range = document.selection.createRange();
      range.text = c;
      range.moveStart('textedit',1);
      range.select();
    } else {
      field.value = field.value + c;
    }
    field.focus();
  }
  return false;
}

我必须添加此项才能停止提交表单的按钮。我怀疑这是我需要放置新东西的地方,但是对jQuery不熟悉我不知道是什么:

$("button.osk").click(function(event){
  // Stop it submitting in case the keyboard is inside a form.
  event.preventDefault();
});

P.S。我知道整齐的jQuery弹出键盘,并希望用他们的替换我的,但现在不是一个选项。

2 个答案:

答案 0 :(得分:0)

使用Jquery时,必须将所有jquery脚本放在以下内容之间:

<script>
   $(document).ready(function()){
     //your jquery stuff here
   });
</script>

我说明这一点的唯一原因是因为您没有提供所有代码。是否可以在jsFiddle.net上提供基础知识,或类似的东西,以便有人可以为您测试。

答案 1 :(得分:0)

问题解决了:

问题似乎在这里:

field = document.forms['main'].elements.item('barcode');

显然jQuery的到来使得这不起作用。我暂时将其替换为:

var field;
$(document).ready(function(){
   field = document.forms['main'].elements['barcode'];
});

请注意,我将其封装在ready函数中,而不是通过items访问它。这在IE8中不起作用。我将不得不解决这个问题。