当前位置: 首页 > 知识库问答 >
问题:

如何在免费jqgrid中允许html5数字输入

刁英朗
2023-03-14

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);
    }
}

若开始内联编辑,则数字将在单元格中消失。按下内联保存按钮后,出现错误函数“自定义值”未定义

如何解决这些问题?


共有1个答案

白永昌
2023-03-14

当然,可以在免费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