2012-03-28 73 views
1

的部分我有持有像这样选择输入/字符串,而不是它的所有

03/15/2012 

我想选择的值,而不是整个事情的只是部分的日期值的输入。例如,如果我在2012年2之前点击现货,2012年将被选中而不是整个日期(对于月份和日期而言,情况也是如此)。

这是我与现在

HTML工作代码:到目前为止,我已经尝试了几件事情

$('.date-container').on('select', function (e) 
    e.preventDefault() 
    this.onselectstart = function() { return false; }; 
}) 

$('.date-container').on('focus', function() 
{ 
    if (document.selection) { 
     this.focus(); 
     var Sel = document.selection.createRange(); 
     Sel.moveStart('character', -this.value.length); 
     CaretPos = Sel.text.length; 
    } 

    // Firefox support 

    else if (this.selectionStart || this.selectionStart == '0') 
     switch (this.selectionStart) { 
     case 0: 
     case 1: 
      this.selectionStart = 0; 
      this.selectionEnd = 1; 
      break; 
    } 

} 

<input class = "date-container" /> 

的JavaScript/jQuery的。上面的代码试图阻止正常的选择动作,然后根据焦点在哪里,选择一部分字符串(我只有switch语句选项的月份部分,但如果它的工作,我会做同样的一天和年)。这可能是错误的做法。

注意事项:

通过选择我的意思是突出显示。

我不想使用插件。

回答

1

此代码将选择被点击的日期部分:

$(".date-container").click(function() { 
    var val = $(this).val(); 
    var sel = this.selectionStart; 
    var firstSep = val.indexOf("/"), secondSep; 
    if (firstSep != -1) { 
     secondSep = val.indexOf("/", firstSep + 1); 
     if (secondSep != -1) { 
      if (sel < firstSep) { 
       this.setSelectionRange(0, firstSep); 
      } else if (sel < secondSep) { 
       this.setSelectionRange(firstSep + 1, secondSep); 
      } else { 
       this.setSelectionRange(secondSep + 1, val.length); 
      } 
     } 
    } 
});​ 

你可以看到它在这里工作:http://jsfiddle.net/jfriend00/QV4VT/

+0

没有看到你确切的代码,我真的不能与你的帮助具体实施。 – jfriend00 2012-03-28 04:08:38

相关问题