Javascript 获取字符串并仅插入该字符串中的数字
我有一个对话框,点击添加按钮后弹出。有两个输入,一个是下拉列表。例如,下拉列表中的信息如下所示:1-公司A、2-公司B等。它是由两个串联的值组成的值。我需要的是先生的身份证,不是先生的名字。然而,每当我提交这个文件并将其插入数据库时,我只想要前几个数字,而不是公司名称或类似的东西。我该怎么做?使用str_替换还是preg_替换工作?如果是的话,我将如何以及在哪里把它放在我的代码中 填充对话框内下拉列表的查询Javascript 获取字符串并仅插入该字符串中的数字,javascript,php,sql-server,insert,Javascript,Php,Sql Server,Insert,我有一个对话框,点击添加按钮后弹出。有两个输入,一个是下拉列表。例如,下拉列表中的信息如下所示:1-公司A、2-公司B等。它是由两个串联的值组成的值。我需要的是先生的身份证,不是先生的名字。然而,每当我提交这个文件并将其插入数据库时,我只想要前几个数字,而不是公司名称或类似的东西。我该怎么做?使用str_替换还是preg_替换工作?如果是的话,我将如何以及在哪里把它放在我的代码中 填充对话框内下拉列表的查询 $sql1 = "WITH cte AS ( SELECT DISTINCT CONCA
$sql1 = "WITH cte AS (
SELECT DISTINCT CONCAT(CAST(Stage_Rebate_Index.MR_ID AS INT),' - ', Stage_Rebate_Master.MR_Name) AS MR_ID
, Stage_Rebate_Index.MR_ID AS sort_column
FROM Stage_Rebate_Index
LEFT JOIN Stage_Rebate_Master
ON Stage_Rebate_Master.MR_ID=Stage_Rebate_Index.MR_ID
)
SELECT MR_ID
FROM
cte
ORDER BY
sort_column;";
用于对话框和添加信息的JavaScript:
$( function() {
$("#insertButton").on('click', function(e){
e.preventDefault();
});
var dialog, form,
mr_id_dialog = $( "#mr_id_dialog" ),
supplier_id = $( "#supplier_id" ),
allFields = $( [] ).add( mr_id_dialog ).add( supplier_id ),
tips = $( ".validateTips" );
console.log(allFields);
function updateTips( t ) {
tips
.text( t )
.addClass( "ui-state-highlight" );
setTimeout(function() {
tips.removeClass( "ui-state-highlight", 1500 );
}, 500 );
}
function checkRegexp( o, regexp, n ) {
if ( !( regexp.test( o.val() ) ) ) {
o.addClass( "ui-state-error" );
updateTips( n );
return false;
} else {
return true;
}
}
function addVendor() {
var valid = true;
allFields.removeClass( "ui-state-error" );
// ----- Validation for each input in add row dialog box -----
//valid = valid && checkRegexp( mr_id_dialog, /^(0|[1-9][0-9]*)$/, "Please enter a valid MR ID" );
valid = valid && checkRegexp( supplier_id, /^(0|[1-9][0-9]*)$/, "Please enter a valid Supplier ID" );
console.log(allFields);
if ( valid ) {
var $tr = $( "#index_table tbody tr" ).eq(0).clone();
var dict = {};
var errors = "";
$.each(allFields, function(){
$tr.find('.' + $(this).attr('id')).html( $(this).val()+"-"+supplier_id );
var type = $(this).attr('id');
var value = $(this).val();
console.log(type + " : " + value);
// ----- Switch statement that provides validation for each table cell -----
switch (type) {
case "mr_id_dialog":
dict["MR_ID"] = value;
break;
case "supplier_id":
dict["Supp_ID"] = value;
break;
}
});
$( "#index_table tbody" ).append($tr);
dialog.dialog( "close" );
console.log(dict);
var request = $.ajax({
type: "POST",
url: "insert.php",
data: dict
});
request.done(function (response, textStatus, jqXHR){
if(JSON.parse(response) == true){
console.log("row inserted");
} else {
console.log("row failed to insert");
console.log(response);
}
});
// Callback handler that will be called on failure
request.fail(function (jqXHR, textStatus, errorThrown){
console.error(
"The following error occurred: "+
textStatus, errorThrown
);
});
// Callback handler that will be called regardless
// if the request failed or succeeded
request.always(function () {
});
}
return valid;
}
var dialog = $( "#dialog-form" ).dialog({
autoOpen: false,
height: 400,
width: 350,
modal: true,
buttons: {
"Add Supplier ID": addVendor,
Cancel: function() {
dialog.dialog( "close" );
}
},
close: function() {
form[ 0 ].reset();
allFields.removeClass( "ui-state-error" );
}
});
form = dialog.find( "form" ).on( "submit", function( event ) {
event.preventDefault();
addVendor();
});
$( "#insertButton" ).button().on( "click", function() {
dialog.dialog({
position: ['center', 'top'],
show: 'blind',
hide: 'blind'
});
dialog.dialog("open");
});
});
Insert.php
<?php
$MR_ID = $_POST['MR_ID'];
$Supp_ID = $_POST['Supp_ID'];
$host="xxxxxxxxx";
$dbName="xxxxx";
$dbUser="xxxxxxxxxxxx";
$dbPass="xxxxxxxxx";
$pdo = new PDO("sqlsrv:server=".$host.";Database=".$dbName, $dbUser, $dbPass);
$sql = "INSERT INTO Stage_Rebate_Index (MR_ID, Supp_ID) VALUES (?, ?)";
$stmt = $pdo->prepare($sql);
$result = $stmt->execute(array($MR_ID, $Supp_ID));
echo json_encode($result);
?>
在java脚本中,只需使用parse int
parseInt(string);
这样做与
var string = "2 - Company A"
var number = parseInt(string);
console.log(number);
给出2的输出
JSFIDLE
如果我正确理解您的代码,它将进入交换机
switch (type) {
case "mr_id_dialog":
dict["MR_ID"] = parseInt(value);
break;
case "supplier_id":
dict["Supp_ID"] = value;
break;
}
这些值被循环到下拉列表中,并且有200+个值,那么有没有一种方法可以只为所有这些值编写几行代码?这个方法看起来好像我必须硬编码所有的东西,我可能是错的,但这就是我读它的方式,你会这样做就在所选值的帖子之前。不需要对所有人都这样做。你能更新答案并加入我的一些javascript吗?这样我就知道应该把它放在哪里了?这也是我想它也会用到的地方,但如果你使用console.log(dict['MR_ID']),它似乎不起作用;你得到了什么输出