我有以下html表单,我试图在不使用任何按钮的情况下提交给javascript。输入查询并按Enter键完成表单提交。
我收到错误" TypeError:undefined不是对象(评估' this.form.query')"。如果我删除' this.form.query'从onsubmit()开始,然后调用该函数。我究竟做错了什么?我该如何将查询传递给JS函数?
<form onsubmit="searchWiki(this.form.query)">
<input type="search" placeholder="Search Wikipedia" name="query" />
</form>
我的JS功能在
之下function searchWiki(data) {
var script = document.createElement('script');
console.log(data);
script.src = '//en.wikipedia.org/w/api.php?action=opensearch&format=json&search=apple%20inc&callback=wikiData';
document.getElementsByTagName('head')[0].appendChild(script);
};
更新 感谢大家的帮助。以下是我更新的代码:
HTML
<form id="search">
<input type="search" placeholder="Search Wikipedia" name="query" />
</form>
JS
function searchWiki(data) {
let script = document.createElement('script');
console.log(data);
script.src = `//en.wikipedia.org/w/api.php?action=opensearch&format=json&search=${data}&callback=wikiData`;
document.getElementsByTagName('head')[0].appendChild(script);
}
document.getElementById('search').addEventListener('submit', function(e) {
e.preventDefault();
searchWiki(encodeURIComponent(this.query.value));
})
答案 0 :(得分:0)
这已经是表单了,所以this.form给出了undefined。
您需要直接传递输入:this.query或传递输入值:
<form onsubmit="searchWiki(this.query.value)">
答案 1 :(得分:0)
您可以在输入中添加id
并使用document.getElementById
<form onsubmit="searchWiki(document.getElementById('query').value)">
<input type="search" placeholder="Search Wikipedia" id="query" name="query" />
</form>
答案 2 :(得分:0)
如果可以使用jQuery,我将如何做到这一点:
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form>
<input type="search" placeholder="Search Wikipedia" name="query" />
</form>
&#13;
#include <stdio.h>
#include <iostream>
using namespace std;
// input function
void Input (float &x, float &y);
float a=1.0, b=1.0, result;
char operation;
char yesNO;
int main ()
{
do {
cout << "Programma wat optelt, aftrekt, vermedigvuldigd en deelt. \n\n";
cout << "Geef een opdracht (eg. 1 + 2): \n";
cin >> a >> operation >> b;
Input (a,b);
cout << "Het antwoord is: " << result << endl;
system ("pause");
return 0;
}
while (yesNO == 'y');
void Input (float &x, float &y)
{
a = x;
b = y;
switch (operation)
{
case '+':
result = x + y;
break;
case '-':
result = x - y;
break;
case '*':
result = x * y;
break;
case '/':
result = x / y;
break;
default:
cout << "foutieve invoer: \n";
cin >> a >> operation >> b;
Input (a, b);
}
}
}
&#13;
答案 3 :(得分:-1)
尽量不要使用&#39;这个&#39;在DOM中。