好的,我觉得这应该很简单;所以要么我完全错过了我在这里以及我读过的其他网站上的问题,要么就是在相同的背景下没有被问过....
我有一个非常简单的表单元素(下面)
<form>
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
基本上我想要做的就是,当点击Submit
按钮时,将text
框中输入的值传递给JavaScript Function
并记录控制台(暂时) 。
这看起来已被问了一百万次,但我读过的问题并没有回答我的问题(我不这么认为)。
编辑感谢您的所有回复;最大的问题是我试图引用在表单元素之后调用的外部Javascript
文件中的函数。
答案 0 :(得分:3)
这样的东西?
document.getElementById('theform').onsubmit = function() {
console.log(document.getElementById('searchTerm').value);
return false;
};
JSFiddle:https://jsfiddle.net/km7rt62v/
return false;
在提交处理程序结束时阻止默认行为非常重要,否则表单会发布并重新加载页面。
正如其他人已经证明的那样,也可以使用表单元素的onsubmit
html属性,这是个人偏好,但我更喜欢在JS和HTML之间进行更清晰的分离。
编辑:由于我得到了接受的答案,问题用jQuery标记,这里是jQuery的等价物:
$('#theform').submit(function() {
console.log($('#searchTerm').val());
return false;
});
答案 1 :(得分:2)
这是一个纯粹的简单JavaScript。 你也可以使用jQuery。
function checkForm(){
console.log(document.getElementById('searchTerm').value);
return false;
}
<form onsubmit='return checkForm();'>
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
答案 2 :(得分:0)
当您在表单中包含提交类型的输入时,可以使用名为onsubmit
的属性。这是一些文档http://www.w3schools.com/tags/ev_onsubmit.asp。
代码看起来像这样
<form onsubmit="submitForm()">
<input type="text" id="searchTerm"/>
<input type="submit" value="Submit" id="submitButton" />
</form>
<script>
function submitForm() {
let input = document.querySelector('#searchTerm');
console.log(input.value);
return false;
}
</script>
答案 3 :(得分:0)
提交表格:
JS:
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.content.Intent;
import android.graphics.Color;
import android.graphics.Typeface;
import android.os.Bundle;
import android.support.v4.app.NavUtils;
import android.support.v7.app.ActionBar;
import android.support.v7.app.AppCompatActivity;
import android.util.TypedValue;
import android.view.Gravity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.DatePicker;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
import java.util.Calendar;
public class SettingsActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_settings);
Typeface ubuntu_MI = Typeface.createFromAsset(getAssets(), "Ubuntu-MI.ttf");
// Get the ActionBar
android.support.v7.app.ActionBar ab = getSupportActionBar();
// Create a TextView programmatically.
TextView tv = new TextView(getApplicationContext());
// Create a LayoutParams for TextView
RelativeLayout.LayoutParams lp = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.MATCH_PARENT, // Width of TextView
RelativeLayout.LayoutParams.WRAP_CONTENT); // Height of TextView
// Apply the layout parameters to TextView widget
tv.setLayoutParams(lp);
// Set text to display in TextView
// This will set the ActionBar title text
tv.setText("Ayarlar");
// Set the text color of TextView
// This will change the ActionBar title text color
tv.setTextColor(Color.parseColor("#FFF5EE"));
// Center align the ActionBar title
tv.setGravity(Gravity.CENTER_HORIZONTAL);
// Set the serif font for TextView text
// This will change ActionBar title text font
tv.setTypeface(ubuntu_MI);
// Underline the ActionBar title text
// tv.setPaintFlags(tv.getPaintFlags()| Paint.UNDERLINE_TEXT_FLAG);
// Set the ActionBar title font size
tv.setTextSize(TypedValue.COMPLEX_UNIT_DIP, 24);
// Display a shadow around ActionBar title text
//tv.setShadowLayer(
// 1.f, // radius
// 2.0f, // dx
// 2.0f, // dy
// Color.parseColor("#FF8C00") // shadow color
//);
// Set the ActionBar display option
ab.setDisplayOptions(ActionBar.DISPLAY_SHOW_CUSTOM);
// Finally, set the newly created TextView as ActionBar custom view
ab.setCustomView(tv);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
}
public boolean onOptionsItemSelected(MenuItem item) {
//Action Bar'daki back butonuna basınca ne yapacağını söylüyoruz.
if (item.getItemId() == android.R.id.home) {
Intent intent = new Intent(getApplicationContext(), ProfileFragment.class);
NavUtils.navigateUpTo(this, intent);
return true;
}
return super.onOptionsItemSelected(item);
}
}
HTML:
var searchForm= document.getElementById('searchForm');
var submitButton = document.getElementById('submitButton');
searchForm.onsubmit= function () {
console.log(searchTerm.value);
};
点击按钮:
JS:
<form id="searchForm">
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
HTML:
var searchTerm = document.getElementById('searchTerm');
var submitButton = document.getElementById('submitButton');
submitButton.onclick = function () {
console.log(searchTerm.value);
};
请参阅演示Here
答案 4 :(得分:0)
要在外部文件中使用这样的功能,最好的办法是在onload事件中连接提交事件:
window.onload=function() {
document.getElementById("form1").onsubmit=function(e) {
e=e?e:event;
e.preventDefault(); // cancel the submit
var val = document.getElementById("searchTerm").value;
console.log(val);
}
}
<form id="form1">
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
jQuery版本:
$(function() {
$("#form1").on("submit",function(e) {
e.preventDefault(); // cancel the submit
var val = $("#searchTerm").val();
console.log(val);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<form id="form1">
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
答案 5 :(得分:0)
你用jQuery标记了这个,所以这是一个jQuery的答案。您需要使用的是.submit()
事件处理程序。
$("form").submit(function(e) {
console.log("form data: %o", $(this).find("#searchTerm").val());
e.preventDefault();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<form>
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
此代码会将处理程序附加到<form>
onsubmit
事件:
答案 6 :(得分:0)
所以主要的问题是我在<script>
元素的底部包含了<body>
元素,链接到我的外部JavaScript文件;这意味着在创建表单时,它不知道我正在谈论的Javascript函数。
感谢所有帮助过的人,这就是解决方案......
<强> HTML 强>
<head>
<!-- jQuery library -->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<!-- Custom JavaScript -->
<script src="js/wiki.js"></script>
</head>
<body>
<form id="theform" onsubmit="test(this.searchTerm.value)">
<input type="text" id="searchTerm" />
<input type="submit" value="Submit" id="submitButton" />
</form>
</body>
</html>
<强>的JavaScript 强>
$(document).ready(function() {
test = function(value) {
console.log(value);
return false;
};
});
答案 7 :(得分:0)
不必在提交表单处理函数中添加另一个getElementById()
。我对为什么这种方法如此普遍感到困惑。如果您需要获取表单的多个/所有值,该怎么办?写几十个元素选择器?
我认为以下内容更干净:
输入可以包含name
属性,以简化其访问范围:
function submitForm(event) {
alert(event.target.elements.searchTerm.value)
return false;
}
<form onsubmit="submitForm(event)">
<input name="searchTerm"/>
<button>Submit</button>
</form>
更好,
function submitForm(that) {
alert(that.searchTerm.value)
return false;
}
<form onsubmit="submitForm(this)">
<input name="searchTerm"/>
<button>Submit</button>
</form>
在处理程序本身中,您甚至可以直接访问值:
<form onsubmit="alert(searchTerm); false">
<input name="searchTerm"/>
<button>Submit</button>
</form>
即使我不知道最新示例为何起作用; Havent找到了与此相关的任何文档;我打开了一个问题here。
如果要从HTML表单中获取键/值映射(普通)对象,请参见this answer。