2014-11-17 60 views
1

我是一個Jquery noob,非常在學習階段。
這是我的小提琴: http://jsfiddle.net/4tjof34d/jquery:當文本框發生變化時獲取文本框的值和標識

(雙擊任何三個點來獲得一個文本框上面搗鼓,然後輸入該框,然後按輸入值) 正如你可以看到它的工作原理,但如何當用戶在文本框中添加新值時,我能得到id和value嗎?

基本上,我需要到像這樣得到的數值:

var theId = $(this)id; 
var newValue = $(this)value; 

// console.log(theId+" "+newValue+ " "+savedData); 

,所以我可以做一個AJAX調用新的值/ s的更新DB。
如果你可以把評論的代碼爲好,例如:

// ajax call here 

,將一併感謝!

回答

2

我注意到你使用jQuery,但它實際上是更容易得到的值沒有它:

var showText = function() { 
    console.log(this.id); 
    console.log(this.value); 
} 

但是,要使用jQuery獲取值,只需使用attr()val()

var showText = function() { 
    // Cache $(this) since we're 
    // using it more than once. 
    var $this = $(this) 

    console.log($this.attr('id')) 
    console.log($this.val()) 
} 
+0

如果我將它放在showText()中,那麼用戶輸入的每個字母都不會被調用? – Ryan

+0

我沒有深入研究你的代碼,但是'showText'是你更新值的地方,對吧?所以你會在那裏AJAX。此外,您還需要檢查輸入是否仍然集中在'keypress'回調中,目前可以觸發'showText'兩次。 –

+0

謝謝!,它在showText()中工作。我不知道該怎麼做這個部分:''''''''''''''''''''''''''要檢查輸入是否仍然在按鍵回調中聚焦,目前您可以觸發showText兩次' – Ryan

1

使用.attr().val()獲得屬性和值:

$(this).attr('id'); 

$(this).val(); 
+0

我是JQ noob,你能告訴我_where_我把上面的代碼請好嗎? – Ryan

+0

@Ryan:在文本框的按鍵事件中。 –

2

您可以使用普通的JavaScript如下:

var theId = this.id; //or $(this).attr('id'); 

var newValue = this.value; //or $(this).val(); 

該怎麼& WHERE

var showText = function() { 
    $(this).hide();//show text 
    $(this.nextElementSibling).show();//hide input 
    $.ajax({ 
     url: '....', 
     data: {id: this.id, value: this.value}, 
     .... 
    }); 
}; 
+0

我該把哪部分代碼放在那裏? – Ryan

+1

你在哪裏需要'id'和'value'? – PeterKA

+0

我需要它作爲文本框的onblur()...(當用戶點擊文本框或按下輸入時)達里爾的解決方案對我來說是一種工作,但會投你的答案 – Ryan

1

使用jquery的任何輸入元素都可以使用.val()函數。所以你的語法就像

$("selector").val(); 

現在這個選擇器的語法會不斷變化。對於前 - 如果你想獲得任何特定的id值的輸入元素值使用「#」。所以,如果你有「testId」的ID輸入字段,你會做

<input type="text" id="testId" class ="testClass"/> 
$("#testId").val(); 

代替ID,如果你想相同的值,但與類的幫助屬性,你會做

$(".testClass").val(); 

現在,如果您還有其他字段,而不是輸入字段,那麼理想情況下應該爲他們使用.text()。

所以,如果你有一個div testDiv的ID,你只需要做

<div id ="testDiv" class="testDivClass">Test</div> 
$("#testDiv").text(); 
$(".testDivClass").text(); 

只是一個建議,因爲你正在學習jQuery的,現在使用混合的東西不要自己(混合核心JavaScript)剛爲了完成所有的工作。這樣,你可能不得不花費一些時間來學習東西,但最終你會以更好的方式學習東西

希望這有一些幫助。

快樂學習

+0

謝謝!我很感激! – Ryan

相關問題