使用jquery select()方法仅在字符串中选择指定的字符

时间:2014-10-17 07:41:50

标签: jquery

例如    如果有一个文本框包含值为" 123 @ sample"。

使用此代码

$('#PIN_ITM_Code').focus().select();

它选择所有123 @样本。

现在我想要的只是123.我已经尝试过这段代码,但是像焦点这样的错误并不是一个功能。

var $this = $('#PIN_ITM_Code').val().split('@')[0];
$this.focus().select();

希望你能帮助我。

3 个答案:

答案 0 :(得分:0)

专注于表单元素的焦点是jquery。但是在你的代码$中,这包含了split返回的字符串。所以它会引发错误。

有javascript方法“setSelectionRange”,可以在输入框中选择文本的特定部分。

所以你的代码将是

var value= $('#PIN_ITM_Code').val();
var index=value.indexOf("@");

$('#PIN_ITM_Code')[0].setSelectionRange(0,index-1)

答案 1 :(得分:0)

试试这个:

var numericonly = $('#PIN_ITM_Code').val().split('@')[0];
alert(numericonly);

答案 2 :(得分:0)

如果你想通过jQuery做到这一点。试试这个。

<input type="text" value="123@sample" />
<button id="a">test</button>
<script>
$.fn.selectRange = function(start, end) {
    return this.each(function() {
        if (this.setSelectionRange) {
            this.focus();
            this.setSelectionRange(start, end);
        } else if (this.createTextRange) {
            var range = this.createTextRange();
            range.collapse(true);
            range.moveEnd('character', end);
            range.moveStart('character', start);
            range.select();
        }
    });
};
$("#a").click(function (){
    var i = $("input").val().indexOf("@");
    $('input').selectRange(i,i + 1);
});
</script>

这是fiddle