2013-03-15 77 views
1

使用JavaScript和jQuery的新JavaScript對象,我想寫代碼執行以下操作:當用戶填寫HTML表單,一個新的對象自動與用戶提供的屬性創建。我有一個構造函數創建用戶定義的屬性

function object (prop1, prop2, prop3) { 
     this.prop1 = prop1; 
     this.prop2 = prop2; 
     this.prop3 = prop3; 
} 

我獲得使用jQuery VAL()這樣的用戶輸入:

object.prop1 = $('input[name = "input1"]').val(); 
object.prop2 = $('input[name = "input2"]').val(); 
object.prop2 = $('input[name = "input3"]').val(); 

我misst是我認爲的構造器和用戶輸入之間的某處。如果我想創建一個新的對象我寫

apple = new object (prop1, prop2, prop3); 

我想要的代碼自動創建一個新的對象,每次用戶填寫表單的時間。我試圖用for循環來做,但我沒有成功。我是一個初學者,所以我想我錯過了一些非常基本的東西。有什麼建議嗎?

+1

爲什麼就不能'蘋果= {PROP1:PROP1,PROP2:PROP2,prop3:prop3};'? – dfsq 2013-03-15 13:05:40

+0

這個對象應該存在於哪裏? JS對象存在於瀏覽器中,所以如果您希望單個用戶多次填寫表單(在一個瀏覽器會話中),您的問題纔有意義。 – Alnitak 2013-03-15 13:06:16

+0

你是否錯過表單提交中的事件處理程序?在這種情況下,您不需要for循環 – 2013-03-15 13:10:11

回答

0

嘗試:

var obj = {}; 

$("input").each(function() { 
    var name = $(this).attr("name"); 
    obj.name = $(this).val(); 
}); 

然後通過訪問:obj.input1

+1

我認爲這就是我所尋找的,即使我無法正確解釋它,所以謝謝! – spb 2013-03-15 13:21:50

+0

也許你的意思是'obj [name] = ...' – MaxArt 2013-03-15 13:24:48

1

沒有必要有一個構造

var obj = {}; 
object.prop1 = $('input[name = "input1"]').val(); 
object.prop2 = $('input[name = "input2"]').val(); 
object.prop2 = $('input[name = "input3"]').val(); 

//Use obj for further processing 
+0

它將由多個單一用戶填寫,因此應該存在於一個瀏覽器會話中。所以如果我像Arun P Johny所說的那樣做,那我以後怎樣才能引用這個對象呢?如果用戶創建三個或四個對象,我以後如何引用它們? – spb 2013-03-15 13:11:43

1

使用jQuery的onsubmit事件綁定到你的表單。

$("[name='FORM_NAME']").submit(function() { 
    var newObj = new object(); 
    newObj.prop1 = $('input[name = "input1"]').val(); 
    newObj.prop2 = $('input[name = "input2"]').val(); 
    newObj.prop2 = $('input[name = "input3"]').val(); 
}); 

不完全確定你想要用對象做什麼,但是這會在提交函數的範圍內創建它。

0

不知道到底爲什麼你會想這樣做,這樣一來,但是你可以用方括號實現它。

function x(a, b) { 
    this[a] = a; 
    this[b] = b; 
    this.list = function() { 
     for(var i in this) { 
      console.log(i+': '+this[i]); 
     } 
    } 
} 
var l = new x('hello', 'world'); 
l.list(); 
0

JavaScript能夠在OOP範例中工作。如果你真的需要的是一個自定義對象,你可以做這樣的:

var Apple = function Apple(p1, p2, p3) { 
    this.p1 = p1; 
    this.p2 = p2; 
    this.p3 = p3; 
}; 

//... 
a = $('input[name = "input1"]').val(); 
b = $('input[name = "input2"]').val(); 
c = $('input[name = "input3"]').val(); 

var obj = new Apple(a,b,c);