2015-12-18 89 views
1

我在Meteor應用程序中有一個表單,其中一個複選框和幾個文本字段用於動態表的每一行。 OnClick,我試圖手動抓住每個字段的數據,並加載一個數據對象,我傳遞給我的服務器來處理。除了閱讀複選框的值之外,一切都可以工作。用於將複選框狀態(選中/未選中狀態)讀取到Meteor中的變量的語法

我認爲這是一個愚蠢的語法錯誤;我試過其他答案的語法,如meteor retrieve true/false value from checkbox switchChange,但目前還沒有運氣...

真的很奇怪的事情(對我來說)是我的代碼剛剛停止,當它打到我想要閱讀的行復選框狀態...沒有錯誤消息,沒有日誌,沒有什麼可以幫助我調試......它只是停止執行。

這裏是我的HTML:

<input type="checkbox" id="{{sku}}-include" checked={{isChecked}}> 

(器isChecked是一個幫助,我已經驗證了它的正常工作,這在id屬性的{{SKU}}位)

這裏的我的JS:

var dataObject = {}; 

var fieldName = '#' + thisProduct.sku + "-displayName"; 
dataObject.nickname = instance.$(fieldName).val(); 
console.log("found displayName value: " + dataObject.nickname + " when looking for " + fieldName); 

fieldName = '#' + thisProduct.sku + "-include"; 
dataObject.includeInReports = instance.$(fieldName).is(":checked").val(); 
console.log("found Include setting: " + dataObject.includeInReports + " when looking for " + fieldName); 

第一組JS線條正常工作;該元素是一個文本字段。 第二組線簡單地死在我試圖實際讀取「檢查」值的地方。

(我試過有和沒有的:在:檢查;由於某種原因,我發現每一個例子使用冒號,但我不是,爲什麼清)

的記錄顯示我的字段名稱正在正確構建......當它執行is(「checked」).val()行時,執行會停止。

非常感謝您的任何建議!

+0

我甚至不知道'$ .is'存在,直到這個問題......但我會嘗試用'$(fieldName).prop(「checked」)替換它,看看它是否不會給你更好的結果。編輯:或者只是嘗試刪除'.val()',因爲這不應該需要。 – Shaded

+0

你是我的英雄! ...道具(「檢查」)完美的作品。 (去除.val()不起作用;我不知道爲什麼,但爲了以防萬一,我再試一次)。 –

+0

沒問題!我將爲這些甜蜜的互聯網點添加我自己的答案:D – Shaded

回答

1

is取決於您的jQuery的版本可能無法正常工作。在1.7之前,它會檢查與最近版本不同的東西。

jQuery docs

之前jQuery的1.7,在具有位置的選擇器,例如選擇字符串:第一,:GT(),或:偶,位置濾波針對傳遞到。就是jQuery對象進行(),而不是針對包含文檔。因此,對於上面顯示的HTML,諸如$(「li:first」).is(「li:last」)的表達式返回true,但$(「li:first-child」).is(「li:last-孩子「)返回false。另外,Sizzle中的一個錯誤阻止了許多位置選擇器的正常工作。這兩個因素使位置選擇器在濾波器中幾乎不可用。

然而,這意味着你做了很多工作比你需要看看你是否有一個複選框。

嘗試使用$(fieldName).prop("checked")來代替,並且您應根據您正在查看的對象獲得簡單的truefalse

2

每@Shaded:

改變。是( 「選中」)VAL()來.prop( 「選中」)完美的作品。

重申;正確的語法流星讀取複選框的選中狀態,通過ID,並將其存儲在一個變量是:

myVar = instance.$(fieldName).prop("checked"); 
相關問題