2012-03-28 66 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

相關問題