2 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超10個贊
你并不需要調(diào)用addPatron的validateItems,但你確實(shí)需要調(diào)用validateItems的addPatron:-)
var validateItems = function () {
// addpatron() // don't call this
var isValid = true
var firstName = $('firstname').value
$('firstname').focus() // puts crusor on field
if (firstName == '') {
$('firstnameerror').innerHTML = 'Enter First Name'
isValid = false
}
var lastName = $('lastname').value
if (lastName == '') {
$('lastnameerror').innerHTML = 'Enter Last Name'
isValid = false
}
var myEmail = $('email').value
if (myEmail == '') {
$('emailerror').innerHTML = 'Enter Email'
isValid = false
}
var myCity = $('city').value
if (myCity == '-') {
$('cityerror').innerHTML = 'Select a City from the list'
isValid = false
}
var myDonation = $('donation').value
if (myDonation == '') {
$('donationerror').innerHTML = 'Enter Donation Amount'
isValid = false
} else if (isNaN(myDonation)) {
$('donationerror').innerHTML = 'Amount must be numeric'
isValid = false
}
return isValid
}
var addpatron = function () {
var isValid = validateItems() // do call this
if (isValid == true) {
$('myform').submit()
} else {
$('endmessage').innerHTML = 'Patron Not Added!'
}
}

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超4個贊
此外,您的 CSS 選擇器是錯誤的。我認(rèn)為您的意圖是查找具有屬性id="firstname"
、id="firstnameerror"
等的html 元素。在 CSS 選擇器中,#
意味著按 id 查找元素,因此您確實(shí)想要$('#firstname')
等。
而且看起來你不懂jquery。Jquery 對象與https://developer.mozilla.org/en-US/docs/Web/API/HTML_DOM_API中記錄的原始 DOM 元素不同。原始 DOM 元素是瀏覽器腳本中可用的最低級別的 DOM 接口。Jquery 是一個建立在它之上的庫。一個 jquery 對象代表一個 DOM 元素(或者多個元素,或者根本沒有)。但是 jquery 對象上可用的方法與原始 DOM 元素上可用的方法完全不同,您似乎正在嘗試使用它們。請注意,由于 jquery 對象根本不能表示任何對象,因此當(dāng)遇到 CSS 選擇器無法匹配 DOM 中的任何元素時,jquery 不會拋出異常。
有不同的方法來解決這個問題。您可以完全接受 jquery,使用 jquery 中可用的所有方法,而不是您所學(xué)的方法。例如,$('validateItems').onclick = addPatron
會變成$('validateItems').click(addPatron)
. 有關(guān)更多詳細(xì)信息,請參閱 jquery.com?;蛘吣憧梢允褂迷?DOM 的東西。
您也可以混合使用這兩種方法,只要您不要混淆這兩種方法即可。例如,我相信 jquery 對象可以像原始 DOM 元素的數(shù)組一樣被取消引用,$('#firstname')[0]
即將是第一個(也是唯一一個)具有 id 的 DOM 元素firstname
。這意味著您可以像對待任何 DOM 元素一樣對待它;例如,var firstName = $('#firstname')[0].value
。(雖然很煩人,但我在文檔中找不到它。)相反,如果element
是原始 DOM 元素,則$(element)
是包含該元素(沒有其他元素)的 jquery 對象。
使用原始 DOM 元素很笨拙。方法名稱很長,并且存在不同瀏覽器之間不一致的問題(雖然我懷疑這不像以前那么糟糕)。Jquery 在我看來更好。但是 jquery 現(xiàn)在也相當(dāng)過時了。更現(xiàn)代的東西使用諸如 React 之類的庫,它使用不同的范式,旨在避免諸如忘記更新頁面部分之類的問題。
添加回答
舉報