2012-11-02 23 views
0

我想阻止用戶在焦點輸入字段內移動光標。別擔心,直到他們開始用他們自己的默認值取代默認值爲止!綁定點擊和綁定按鍵到輸入字段的區別

下面的代碼成功地防止用戶使用方向鍵移動光標:

$('.test').focus(function() { 
    $(this).bind('keypress', function(event) { 
     if (event.keyCode > 36 && event.keyCode < 41) { 
      return false; 
     } else { 
      return true; 
     }  
    }); 
}); 

但類似的代碼,例如:

$('.test').focus(function() { 
    $(this).bind('click', false); 
}); 

不從內移動光標停止的點擊輸入字段。 這兩種情況有什麼區別?

+3

使用'placeholder'屬性會不會更容易? –

+0

是的。這會更容易。我想我會這樣做。謝謝! – cowabungabill

回答

2

keypress是通過鍵盤輸入時觸發的事件。 click是一個鼠標事件。

+0

嗯。我只是嘗試mousedown,它工作,但點擊仍然無法正常工作。爲什麼mousedown工作,點擊不工作? – cowabungabill

+0

@cowabungabill'mousedown'被觸發,當你按下鼠標按鈕時。當你釋放鼠標按鈕時,'click'被觸發。 'click'與'mousedown'和'mouseup'相同。 – feeela

+0

使用這兩個,如果你需要'mousedown點擊' – VIDesignz

0

在這裏你去的人...

$('#noclick').on('mousedown click', function() { 
      return false; 
}); 

Fiddle

+0

'return false;'不停止事件默認操作。你需要一個'function(event){event.preventDefault(); '作爲你的回調。請參閱:http://api.jquery.com/event.preventDefault/ – feeela

+0

@feela這是否使初始'點擊'不起作用? – VIDesignz

+0

是的,'event.preventDefault();'確實會禁用所選事件的正常事件操作。這意味着瀏覽器不會執行任何操作,除非您在'event.preventDefault();'之後添加自己的代碼,以便自己對點擊執行任何操作。例如,$('[href]')。on('mousedown click',function(){event.preventDefault();});'禁用當前頁面上的所有超鏈接。 – feeela

0

也許這對你的作品:

$(".test").focus(); 
$(".test").bind('keydown', function(event) { 
    if (event.keyCode > 36 && event.keyCode < 41) { 
     return false; 
    } else { 
     return true; 
    }  
}); 
$(".test").bind('mousedown', function(event) { 
    return false; 
});​ 

看到http://jsfiddle.net/zEp36/

這可以防止所有鼠標向下的動作上輸入字段。箭頭鍵也被抑制。剛開始輸入,你會替換默認值。