我正在處理的網頁上的表單在桌面上完美工作,但不適用於手機(iPad和iPhone)。當你點擊「提交消息」按鈕時,沒有任何反應。確認消息沒有出現,我沒有收到電子郵件(在後端使用nodemailer發送給我一封電子郵件)。我嘗試了以下內容:臺式機和移動 表單提交按鈕不適用於手機(iPhone和iPad)
- 在HTMLFormElement對象的onsubmit屬性,而不是使用事件偵聽器
下面是HTML:
<section id="contactContainer">
<section id="form"><a id="contact"></a>
<h2>Contact Me</h2>
<form action="/formSubmission" method="post">
<label for="reason">Reason for reaching out:</label>
<select name="reason">
<option value="Marketing">Marketing</option>
<option value="Web Development">Web Development</option>
<option value="other">Other</option>
</select><br>
<div>
<input type="text" name="firstName" placeholder="First Name" class="name" required>
<input type="text" name="lastName" placeholder="Last Name" class="name" required>
</div>
<input type="text" name="company" placeholder="Company" required><br>
<input type="text" name="email" placeholder="Email Address" required><br>
<textarea name="message" placeholder="Let me know what you're looking for."></textarea>
<input type="submit" value="Send Message" name="submit">
</form>
</section>
<section id="confirmation">
<h2>Thanks for sending! I'll be in touch shortly.</h2>
</section>
</section>
和香草JS:
var form = document.querySelector('form'),
button = document.querySelector('form input[name="submit"]'),
confirmation = document.querySelector('#confirmation h2'),
formSection = document.querySelector('#form');
form.addEventListener('submit', submit);
button.addEventListener('touchend', submit);
function sortFormData(form) {
var parsedForm = {},
elements = [...form.elements];
elements.forEach(element => {
if(element.name) {
parsedForm[element.name] = element.value;
}
})
return JSON.stringify(parsedForm);
}
//Form confirmation
HTMLElement.prototype.makeTransparent = function() {
this.style.opacity = 0;
this.style['z-index'] = 0;
}
HTMLElement.prototype.appear = function() {
this.style['z-index'] = 1;
this.style['font-size'] = '0px';
this.style.opacity = 1;
if(this.style['font-size'] === '0px') {
console.log('Animation start.');
}
this.classList.add('submitted');
}
//Helper function
function submit(e) {
e.preventDefault();
var formData = sortFormData(form);
var request = new XMLHttpRequest()
request.open('POST', './formSubmission', true);
request.setRequestHeader('Content-type', 'application/json');
request.send(formData);
formSection.makeTransparent();
confirmation.appear();
}
任何幫助表示讚賞!