html5有数字输入类型,如
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
</head>
<body>
<input type="number" />
</body>
</html>
在这种情况下,输入时禁用非数字字符。触摸设备中自动显示纯本机数字键盘。
如何强制自由jqgrid字段编辑使用此类型?
jgrid列定义为
{"label":"Quantity","name":"Valkogus",
"index":"Valkogus","align":"right",
"searchoptions":{"sopt":["eq","ne","lt","le","gt","ge"]},
"editoptions":{"maxlength":7,
"dataEvents":[{"type":"change","fn":function(e) {dataChanged(e.target)}
},
{"type":"focus","fn":function(e) {if(typeof e.target.ischanged=='undefined') {e.target.ischanged=false}}
}],"style":"text-align:right","readonly":null,"class":"jqgrid-inlineedit-element ","disabled":null},
"editable":true,"width":62,
"classes":null,"hidden":false},
jqrid是从远程json数据创建的。使用内联和表单编辑和搜索工具栏。这允许输入任何字符。在触摸设备全键盘出现。
如何解决此问题,以便在编辑和工具栏搜索中,此字段显示为type=“number”
属性?
如何指定输入仅为整数或允许小数点?可能是html5验证属性,也添加到为此创建的输入元素中。
在免费jqgrid中如何在表单和行编辑中使用本机日期选择器的答案描述了html5本机日期选择器的用法。也许这也可以用来输入数字
使现代化
我使用来自的示例创建了客户格式化程序
在自定义编辑类型字段中添加多个输入元素
Colmodel:
{"edittype":"custom",
"name":"Kogus",
"align":"right",
"searchoptions":{"sopt":["eq","ne","lt","le","gt","ge"]},
"editoptions":{"custom_element":function(value, options) {
return numeric_element(value, options,'58','Kogus','RidG','ArtKogus')}
,
"custom_value":combobox_value,
"maxlength":12,
"style":"text-align:right",
"readonly":null,
"disabled":null
},
"editable":true,
"width":58,
"classes":null,
"hidden":false
},
javascript
function numeric_element(value, options, width, colName, entity, andmetp) {
var elemStr, newel;
elemStr = '';
if (options.id === options.name) {
elemStr += '<input type="number" class="FormElement" size="' +
options.size + '"' + ' id="' + options.id + '"';
}
else {
elemStr += '<input type="number" ' +
' style="text-align: right; width: 100%; box-sizing: border-box;" ' +
' id="' + options.id + '" maxlength="'+ options.maxlength+'" name="'+options.name+'"';
}
elemStr += ' value="' + value + '"/>';
newel = $(elemStr);
return newel;
}
function combobox_value(elem, operation, value) {
if (operation === 'get') {
return $(elem).find("input").val();
} else if (operation === 'set') {
$('input', elem).val(value);
}
}
若开始内联编辑,则数字将在单元格中消失。按下内联保存按钮后,出现错误函数“自定义值”未定义
。
如何解决这些问题?
当然,可以在免费jqGrid中实现对type=“number”
属性和其他HTML5type
属性的支持。将来我会考虑这样做。今天,我认为缺少语言环境支持是HTML5type
的一大缺点。我认为这是设计上的错误。我建议您查看答案、文章或W3的这篇文章。例如,您可以尝试修改文章中的standrad演示以使用
<input type="number" name="quantity" min="0.01" max="10" lang="de">
您将看到GoogleChromev.46忽略了lang
属性,并使用了Web浏览器的区域设置。换句话说,HTML5type
属性的当前状态还没有为多语言支持做好准备。
您可以使用pattern
属性进行更好的验证(请参见ansewr),但强制使用,
而不是,仍然没有帮助。
如果现在确实需要使用
type=“number”
属性,可以使用edittype:“自定义”。例如,您可以在答案中找到带有示例的演示。
最后我想提到的是,我上次看到了关于stackoverflow的许多问题,这些问题看起来像是功能请求或是实现某些部分的请求,人们希望在其商业产品中使用这些部分。我在空闲时间开发免费jqGrid。我免费提供工作结果。我只是请求通过PayPal捐款(见自述文件)来促进发展。另一方面,我得到的捐款很少,大多数开发人员更愿意只使用开发的结果。真遗憾。一个人至少可以与另一个人共享他的reauslt(以代码片段的形式)。Stackoverflow和GiHub不是sombody免费提供工作的地方。有人可以给你一些建议,但你还是要充分利用自己的工作。
更新:可以使用
edit选项
在上设置自定义属性
演示http://jsfiddle.net/OlegKi/kvtrtzc5/2/工作良好,例如在我的谷歌Chrome,但它可能不正确的其他输入数据或其他语言环境Chrome浏览器。因此,我不认为演示是解决方案,它在某些环境中仍然有帮助。我在演示中使用了以下列的定义
金额
:
{
name: "amount",
width: 62,
template: "number",
editoptions: {
type: "number",
step: "0.01",
min: "0.00",
max: "1000",
pattern: "[0-9]+([\.|,][0-9]+)?",
title: "This should be a number with up to 2 decimal places."
}
}
更新2:又一个演示http://jsfiddle.net/OlegKi/kvtrtzc5/3/使用德语区域设置显示数据。如果您在Google Chrome中使用德语GUI语言(必须重新启动Google Chrome进程,更好地从系统注销和登录),那么用户将看到
,
作为小数分隔符。
在web应用程序中仍然没有选择输入元素的语言环境的灵活性。结果仅取决于web浏览器设置,不能在JavaScript应用程序中指定。
我们发现,再次使用GridUnload和grid load时,工具栏搜索将被完全删除: 此行已删除完成。
问题内容: 用于保存jqgrid状态。它使用列号保存jqgrid列状态。如果在服务器中更改了jqgrid colmodel,这将导致浏览器中的javascript错误。 免费的jqgrid是从今天的git master下载的。调整列大小或移动行后处于状态保存 改为 并在状态下以loadComplete代码还原 与 现在行 导致错误 如何解决此问题,以便在更改列定义时可以使用列状态? 方法定义为 问
我有一个输入字段,用户只能在其中输入数字。 JSFIDLE演示 问题是:当我输入一个数字(例如,)然后按点()时,或-浏览器会自动删除输入字段的内容(值设置为“”=空字符串)。但是为什么呢?将类型从更改为似乎可以解决问题。但是,我失去了输入字段的向上/向下箭头功能。有什么想法吗?
全部的 我试图在按下工具栏按钮[顶部寻呼机]时实现自定义警告消息,如“请选择行”。我不想使用警报!! 我遵循了Oleg的一个例子(至少对我来说是JqGrid大师!!)i、 e.Stackoverflow参考-jqGrid警告对话框。Oleg演示参考-http://www.ok-soft-gmbh.com/jqGrid/Warning.htm 如果我使用与Oleg演示中相同的版本,所有这些都可以正常
问题内容: 我是angularjs的新手。我想知道什么是只允许在文本框中键入有效数字的方法。例如,用户可以键入“ 1.25”,但不能键入“ 1.a”或“ 1 ..”。当用户尝试输入下一个将使它成为无效数字的字符时,他将无法输入。 提前致谢。 问题答案: 您可以尝试使用此指令来阻止将任何无效字符输入到输入字段中。( 更新 :这依赖于对模型具有明确知识的指令,这对于可重用性而言并不理想,请参见下面的可
问题内容: 我正在创建一个网页,其中有一个输入文本字段,我只想在其中允许数字字符,例如(0,1,2,3,4,5 … 9)0-9。 我该如何使用jQuery? 问题答案: 注意: 这是更新的答案。下面的注释指的是一个旧版本,其中充斥着密钥代码。 在JSFiddle上 尝试一下。 对此没有原生的jQuery实现,但是您可以使用以下插件过滤文本的输入值(支持Copy + Paste,Drag + Dro