我想创建一个像按钮一样的HTML按钮.因此,当您单击该按钮时,它会重定向到页面.我希望它尽可能地易于访问.
我也很喜欢它,所以URL中没有任何额外的字符或参数.
我怎样才能做到这一点?
根据到目前为止发布的答案,我目前正在这样做:
<form method="get" action="/page2">
<button type="submit">Continue</button>
</form>
Run Code Online (Sandbox Code Playgroud)
但问题是在Safari和Internet Explorer中,它在URL的末尾添加了一个问号字符.我需要找到一个不会在URL末尾添加任何字符的解决方案.
还有另外两种解决方案:使用JavaScript或样式化链接看起来像一个按钮.
使用JavaScript:
<button onclick="window.location.href='/page2'">Continue</button>
Run Code Online (Sandbox Code Playgroud)
但这显然需要JavaScript,因此屏幕阅读器不易访问.链接的要点是转到另一个页面.因此,尝试使按钮像链接一样是错误的解决方案.我的建议是你应该使用一个链接并将其设置为看起来像一个按钮.
<a href="/link/to/page2">Continue</a>
Run Code Online (Sandbox Code Playgroud) 在查看大多数网站(包括SO)时,大多数网站使用:
<input type="button" />
Run Code Online (Sandbox Code Playgroud)
代替:
<button></button>
Run Code Online (Sandbox Code Playgroud)
<button>兼容性问题,看到它没有被广泛使用?我有一个文本输入和一个按钮(见下文).当在文本框中按下键时,如何使用JavaScript 触发按钮的单击事件Enter?
我当前页面上已经有一个不同的提交按钮,所以我不能简单地将按钮设置为提交按钮.并且,如果从这个文本框中按下该按钮,我只希望Enter键单击此特定按钮,没有别的.
<input type="text" id="txtSearch" />
<input type="button" id="btnSearch" value="Search" onclick="doSomething();" />
Run Code Online (Sandbox Code Playgroud) 在下一页中,使用Firefox,删除按钮提交表单,但添加按钮不提交.如何阻止删除按钮提交表单?
<html>
<head>
<script type="text/javascript" src="jquery-1.3.2.min.js"></script>
<script type="text/javascript">
function addItem() {
var v = $('form :hidden:last').attr('name');
var n = /(.*)input/.exec(v);
var newPrefix;
if ( n[1].length == 0 ) {
newPrefix = '1';
} else {
newPrefix = parseInt(n[1])+1;
}
var oldElem = $('form tr:last');
var newElem = oldElem.clone(true);
var lastHidden = $('form :hidden:last');
lastHidden.val(newPrefix);
var pat = '=\"'+n[1]+'input';
newElem.html(newElem.html().replace(new RegExp(pat, 'g'), '=\"'+newPrefix+'input'));
newElem.appendTo('table');
$('form :hidden:last').val('');
}
function removeItem() {
var rows = $('form tr');
if ( rows.length > 2 ) …Run Code Online (Sandbox Code Playgroud) 我正在尝试在按钮上创建一个图像(作为背景)并动态添加,具体取决于运行时发生的情况,图像上方/上方的一些文本.
如果我使用ImageButton我甚至没有可能添加文本.如果我使用,Button我可以添加文本,但只定义具有此处android:drawableBottom定义的XML属性的图像.
然而,这些属性仅在x和y维度中组合文本和图像,这意味着我可以在文本周围绘制图像,但不能在我的文本下方/下方(z轴定义为从显示中出来).
有关如何做到这一点的任何建议?一个想法是扩展Button或ImageButton覆盖draw()-method.但凭借我目前的知识水平,我真的不知道如何做到这一点(2D渲染).也许有经验的人知道解决方案或至少有一些指针可以开始?
我有一个表格,有2个按钮
<a href="index.html"><button>Cancel changes</button></a>
<button type="submit">Submit</button>
Run Code Online (Sandbox Code Playgroud)
我也使用jQuery UI的按钮,就像这样
$('button').button();
Run Code Online (Sandbox Code Playgroud)
但是,第一个按钮也会提交表单.我会想,如果它没有type="submit",它就不会.
显然我可以做到这一点
$('button[type!=submit]').click(function(event) { event.stopPropagation(); });
Run Code Online (Sandbox Code Playgroud)
但有没有办法可以阻止后退按钮提交表单而无需JavaScript干预?
说实话,我只使用了一个按钮,所以我可以使用jQuery UI来设置它.我试着调用button()链接,它没有按预期工作(看起来很丑!).
Pre-Honeycomb(Android 3),每个Activity都已注册,可通过onClickLayout的XML中的标签处理按钮点击:
android:onClick="myClickMethod"
Run Code Online (Sandbox Code Playgroud)
在该方法中,您可以使用view.getId()和switch语句来执行按钮逻辑.
随着Honeycomb的推出,我将这些活动分解为碎片,可以在许多不同的活动中重复使用.按钮的大部分行为都是与Activity无关的,我希望代码驻留在Fragments文件中,而不使用OnClickListener为每个按钮注册的旧(pre 1.6)方法.
final Button button = (Button) findViewById(R.id.button_id);
button.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Perform action on click
}
});
Run Code Online (Sandbox Code Playgroud)
问题是,当我的布局被夸大时,它仍然是接收按钮点击的托管活动,而不是单个碎片.对两者都有好的方法
在这个,这个和这个线程我试图找到如何在单个视图上设置边距的答案.但是,我想知道是否有更简单的方法.我会解释为什么我宁愿不想使用这种方法:
我有一个自定义Button,扩展了Button.如果背景设置为默认背景以外的其他内容(通过调用setBackgroundResource(int id)或setBackgroundDrawable(Drawable d)),我希望边距为0.如果我这样称呼:
public void setBackgroundToDefault() {
backgroundIsDefault = true;
super.setBackgroundResource(android.R.drawable.btn_default);
// Set margins somehow
}
Run Code Online (Sandbox Code Playgroud)
我希望边距重置为-3dp(我已经在这里阅读如何从像素转换为dp,所以一旦我知道如何在px中设置边距,我就可以自己管理转换).但是因为这是在CustomButton类中调用的,所以父级可以从LinearLayout变为TableLayout,而我宁愿不让他得到他的父级并检查该父级的实例.我想,这也将是非常无形的.
另外,在调用时(使用LayoutParams)parentLayout.addView(myCustomButton, newParams),我不知道这是否将它添加到正确的位置(但是没有尝试过),比如一行五的中间按钮.
问题:除了使用LayoutParams之外,还有更简单的方法以编程方式设置单个按钮的边距吗?
编辑:我知道LayoutParams方式,但我想要一个避免处理每个不同容器类型的解决方案:
ViewGroup.LayoutParams p = this.getLayoutParams();
if (p instanceof LinearLayout.LayoutParams) {
LinearLayout.LayoutParams lp = (LinearLayout.LayoutParams)p;
if (_default) lp.setMargins(mc.oml, mc.omt, mc.omr, mc.omb);
else lp.setMargins(mc.ml, mc.mt, mc.mr, mc.mb);
this.setLayoutParams(lp);
}
else if (p instanceof RelativeLayout.LayoutParams) {
RelativeLayout.LayoutParams lp = (RelativeLayout.LayoutParams)p;
if (_default) lp.setMargins(mc.oml, …Run Code Online (Sandbox Code Playgroud) 我创建了一个包含两个按钮的布局,Next和Previous.在按钮之间,我正在生成一些动态视图.因此,当我第一次启动应用程序时,我想禁用"上一页"按钮,因为之前没有任何视图.我还想在没有更多要显示的视图时禁用"下一步"按钮.无论如何禁用按钮?

button ×10
android ×5
html ×4
javascript ×3
layout ×2
anchor ×1
back ×1
forms ×1
html-input ×1
htmlbutton ×1
hyperlink ×1
image ×1
jquery ×1
jquery-ui ×1
margin ×1
onclick ×1
onkeypress ×1
submit ×1
text ×1
xml ×1